【发布时间】:2016-05-27 21:24:55
【问题描述】:
我第一次尝试使用 ng-include 和 ng-submit。我一直在尝试关注这个 SO 问题Why form undefined inside ng-include when checking $pristine or $setDirty()?。以下是我构建 index.html 的方式:
<div id="info" ">
<div ng-include src="'standard.html'" ng-controller="FormController as formcontrol">
</div>
</div>
在我的standard.html中
<uib-accordion close-others="oneAtATime"> <uib-accordion-group
heading="{{person.personID}}" ng-repeat="person in people.info">
<form name="formHolder.personForm>
<div class ="form-group">
<input type="text" name="name"
class="form-control"
ng-model="person.name"
ng-readonly="person.name">
</div>
----------
</form>
<button type="button" ng-submit="updateStatus(person.personID)"
class="btn btn-success btn-lg btn-block">Update</button>
同样,我还有 20 个字段,其中只有 4 个是可编辑字段。一旦用户单击更新按钮,我想将所有表单数据放入 FormController 中进行的 ajax 调用。
在我的表单控制器中:
(function() {
angular.module('peopleInfo2').controller('FormController', ['$http','$scope', function($http, $scope) {
$scope.formHolder = {};
$scope.updateStatus =function (personID) {
console.log($scope.formHolder);
};
}]);
})();
问题:
a) 使用 ng-submit 时不会调用表单,但使用 ng-click 时会调用。我已经阅读了他们之间的差异以及他们说我应该使用 ng-submit 的所有地方。我做错了什么?
b) 目前,如果我使用 ng-click,则 $scope.formHolder 中的数据是一个 personForm 对象,其中包含我的数据,所有数据都在 updateStatus 函数中以对象形式存在。为什么我不能像 deviceForm.personID 那样访问它们?为什么它会给我像 $modelValue 和 $viewValue 这样的值,而不仅仅是表单中绑定到 ng-model 的值?
c) 如果我使用 ng-click,那么无论何时提交表单。它只是从 person.info 数组的最后一个条目中获取值。这意味着无论如何,在尝试读取 ng-model 的值时,只能访问 ng-repeat 读取的最后一个值。为什么?
我将不胜感激。我很接近得到这个东西,但我想确保我理解正确,因为它将在整个项目中使用。我之前尝试使用自定义指令,但有人建议该方法不正确呈现 Web 表单,应使用 ng-include。谢谢。
【问题讨论】:
-
把你的
-
是的,这确实是问题所在。但是点击更新按钮时表单仍然没有得到更新的值。有什么建议吗?
标签: javascript html angularjs forms