【问题标题】:Dynamic input to add object to array in angularjs在angularjs中将对象添加到数组的动态输入
【发布时间】:2015-03-29 13:09:58
【问题描述】:
<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({});
}

我正在使用 angular bootstrap 中的 typeahead,因此它会返回学生对象,然后我想将这些对象添加到表单所属的任何类的学生数组中。 数据是一堆类对象,每个类对象都有一个学生属性,该属性是一组学生对象。此时,正在将一个学生对象添加到另一个对象。所以看起来,[0:{firstName: "first", lastName: "last", ...}] 而不是 [{firstName: "first", lastName: "last", ...}]

这是一种很好的方法吗?为什么要将对象嵌套在对象中?

【问题讨论】:

    标签: angularjs forms dynamic input typeahead


    【解决方案1】:

    由于 Javascript 的性质,它是对象中的对象,它将对象作为“引用的副本”传递 如果它会改变对象本身,那么这种改变只会在函数的(Javascript,而不是 AngularJs)范围内进行。在这个函数之外,你的值根本不会改变。 如果您更改此对象的字段,它们也将在您的函数之外持续存在 很好的描述Does Javascript pass by reference?

    【讨论】:

      猜你喜欢
      • 2014-08-05
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多