<div ng-repeat="class in classses">
<p>{{class.className}}</p>
<form novalidate>
<div ng-repeat="studentInput in class.students track by $index">
<input type="text" ng-model="studentInput[$index]" typeahead="student as (student.lastName + ', ' + student.firstName) for student in findStudents($viewValue)"/>
</div>
<button type="button" ng-click="addStudent(class)">Add Student</button>
</form>
</div>
在控制器中我有:
$scope.addStudent = function(class){
class.students.push({});
}
我正在使用角度引导程序中的typeahead,因此它返回学生对象,然后我想要添加到表单所属的任何类的学生数组中。
数据是一组类对象,每个对象都有一个学生属性,这是一个学生对象数组。此时,学生对象正被添加到另一个对象。看起来好像是[0:{firstName: "first", lastName: "last", ...}]
而不是[{firstName: "first", lastName: "last", ...}]
这是一个很好的方法吗?为什么它在对象中嵌套一个对象?
答案 0 :(得分:0)
由于Javascripts的性质,它是对象中的一个对象,它将对象作为“引用的副本”传递 如果它将更改对象本身,则此更改将仅在函数的(Javascript,而不是AngularJs)范围内进行。在此功能之外,您的值根本不会发生变化。 如果更改此对象的字段,它们将在您的函数之外也是持久的 一个很好的描述Does Javascript pass by reference?