用于将对象添加到angularjs中的数组的动态输入

时间:2015-01-30 04:55:11

标签: angularjs forms dynamic input typeahead

<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", ...}]

这是一个很好的方法吗?为什么它在对象中嵌套一个对象?

1 个答案:

答案 0 :(得分:0)

由于Javascripts的性质,它是对象中的一个对象,它将对象作为“引用的副本”传递 如果它将更改对象本身,则此更改将仅在函数的(Javascript,而不是AngularJs)范围内进行。在此功能之外,您的值根本不会发生变化。 如果更改此对象的字段,它们将在您的函数之外也是持久的 一个很好的描述Does Javascript pass by reference?