我在使用ng-model时遇到问题。当我查看对象时,所有属性均为空:
$scope.edit = {
name: " ",
gender: " ",
major: " ",
gpa: " ",
act: " ",
sat: " ",
toefl: " ",
primary: " ",
secondary: " ",
country: " ",
summary: " ",
past: " ",
media: " "
};
但是当我单击提交按钮时,所有返回的都是
在html页面中
代码:https://plnkr.co/edit/HJlfFVjq0cZWJDCDXSXw?p=preview
最佳答案
从小伙子们(尽管我无法运行您的代码),很明显的是,您在窗体中的两个不同场合使用同一控制器PlayerController
。
这里发生的是,updateUser()
属性的方法ng-click
绑定到控制器PlayerController
的新实例。因此,创建一个新的scope
,并且完全不知道对其相邻同名控制器的范围属性(在本例中为edit
)进行了哪些更改。
<div ng-controller="PlayerController">
<!-- ISOLATE region -->
<textarea ng-model="edit.someproperty"></textarea>
</div>
<div ng-controller="PlayerController">
<!-- Another isolate region unaware of the above -->
<button ng-click="updateUser(edit)">Update</button>
</div>
解
将您的整个表格包装在一个单独的
ngController
指令中,以便该范围内的所有内容(ngModel
指令和方法updateUser
)都使用相同的范围属性。Simple Demo
注意:我还注意到您将
ngController
包裹在form
中,这是不正确的。 AngularJS中的form
施加一个FormController
控制器对象,该控制器成为控制器的直接父级。实际上,使用ngController
创建的控制器是用来处理表单逻辑的,而不是其他方式。