Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng include和ng submit中的作用域丢失,而ng click不提交表单,但没有表单值_Javascript_Html_Angularjs_Forms - Fatal编程技术网

Javascript ng include和ng submit中的作用域丢失,而ng click不提交表单,但没有表单值

Javascript ng include和ng submit中的作用域丢失,而ng click不提交表单,但没有表单值,javascript,html,angularjs,forms,Javascript,Html,Angularjs,Forms,我第一次尝试使用ng include和ng submit。我一直在试图回答这个问题。以下是我如何构建index.html的: <div id="info" "> <div ng-include src="'standard.html'" ng-controller="FormController as formcontrol"> </div> </div> 问题: a) 使用ng submit时不会调用表单,但使用ng click时会调用

我第一次尝试使用ng include和ng submit。我一直在试图回答这个问题。以下是我如何构建index.html的:

<div id="info" ">
   <div ng-include src="'standard.html'" ng-controller="FormController as formcontrol"> 
</div>
</div>
问题:

a) 使用ng submit时不会调用表单,但使用ng click时会调用表单。我已经阅读了他们之间的差异以及他们说我应该使用ng submit的地方。我做错了什么

b) 当前,如果我使用ng click,那么$scope.formHolder中的数据是personForm对象,其中包含我的数据,所有数据都以对象形式存在于updateStatus函数中。为什么我不能像deviceForm.personID一样访问它们?为什么它会给我$modelValue和$viewValue这样的值,而不仅仅是形式上绑定到ng模型的值

c) 如果我使用ng click,则无论何时提交表单。它只是从person.info数组中的最后一个条目中提取值。这意味着,无论怎样,在尝试读取ng模型的值时,只有ng repeat读取的最后一个值是可访问的。为什么?


我将感谢任何帮助。我很快就会明白这一点,但我想确保我正确地理解了这一点,因为它将在整个项目中使用。我之前试图使用自定义指令,但有人建议,这种方法不适合呈现web表单,应该使用ng include。谢谢。

您的代码中存在一些问题,但作为第一个问题,我认为您应该在表单标记上使用ng SUBSIT指令。像这样:

<form name="{{formHolder.personForm}}" ng-submit="updateStatus(person.personID)">...</form>
。。。
使用
作为表单中的提交按钮


但是为什么不在表单中使用ng repeat并将整个数组传递给submit函数呢?

将您的数组放入Yes,这确实是问题所在。但表单仍然无法在单击更新按钮时获取更新的值。有什么建议吗?我现在已将其放入表单
中,并将
ng submit=“updateStatus(person.personID)”
与表单声明一起移动。。但是,
updateStatus
函数没有被触发。另外,我可以知道为什么在表单名
中使用表达式“{{formHolder.personForm}}”
请?@KavehG my bad。。我部署了一个错误的war文件。这很有效。它触发
updateStatus
函数。根据您的
ng repeat
问题,我想首先使用
person-in-people.info
显示手风琴的标题。因此,每个标题都会展开,显示包含特定单击personID条目的表单。所以我认为我应该首先显示手风琴的标题,然后显示与手风琴相关的表单。这是错误的想法还是设计?另外,在触发
updateStatus
时,我仍然无法从表单中获取更新的值。它现在确实获取了更新的值。谢谢你的帮助。我一直坚持序列化表单值,但我认为我可以尝试处理它并解决它。
(function() {
    angular.module('peopleInfo2').controller('FormController', ['$http','$scope', function($http, $scope) {                 

        $scope.formHolder = {};
        $scope.updateStatus =function (personID) {
            console.log($scope.formHolder);
        };
    }]);        
})();
<form name="{{formHolder.personForm}}" ng-submit="updateStatus(person.personID)">...</form>