$index在ng-repeat中不存在-答案在我的原始帖子中


$index does not exist in ng-repeat - the answer is inside my original post

当试图将$index绑定到复选框时,我在ng-repeat中遇到了一个问题。首先,赋值一个数组,如下所示:

var_dump from php:

array(3) {
    [0] => array(9) {
        ["first_name"] => string(3)
        "emp" ["last_name"] => string(5)
        "loyee" ["username"] => string(4)
        "emp1" ["email"] => string(22)
        "blabla@gmail.com" ["id"] => string(3)
        "539" ["rights_type"] => string(1)
        "3" ["editProfile"] => bool(true)["sendMessage"] => bool(true)["editApps"] => bool(false)
    }[1] => array(9) {
        ["first_name"] => string(3)
        "one" ["last_name"] => string(4)
        "more" ["username"] => string(4)
        "emp2" ["email"] => string(19)
        "blabla@gmail.com" ["id"] => string(3)
        "540" ["rights_type"] => string(1)
        "0" ["editProfile"] => bool(false)["sendMessage"] => bool(false)["editApps"] => bool(false)
    }["isEmpty"] => bool(false)
} 

我的代码是这样的:

<tr ng-repeat="employee in employees.result track by $index" ng-if="employee.username">
    <th class="col-md-1" scope="row">{{employee.username}} - ({{employee.first_name}} {{employee.last_name}})</th>
    <td class="col-md-1"><input type="checkbox" ng-model="employees.result.$index.editProfile"></td>
    <td class="col-md-1"><input type="checkbox" ng-model="employees.result.$index.sendMessage"></td>
    <td class="col-md-1"><input type="checkbox" ng-model="employees.result.$index.editApps"></td>
</tr>

该对象被附加到控制器的$作用域。重要的是,ng-repeat确实有效,我得到了名字,用户名等的正确值,只是无法得到$index。当我试图打印{{$index}}时,我什么也得不到。我试图从数组中删除"isEmpty"键,但它也没有帮助。什么好主意吗?

Roee-distler最初将他们的解决方案编辑到问题中


我要改变的只是员工。结果发给雇员,它实际上更新了雇员。结果(数组的每个单元格分别),因此它看起来像:

<tr ng-repeat="employee in employees.result track by $index" ng-if="employee.username">
    <th class="col-md-1" scope="row">{{employee.username}} - ({{employee.first_name}} {{employee.last_name}})</th>
    <td class="col-md-1"><input type="checkbox" ng-model="employee.editProfile"></td>
    <td class="col-md-1"><input type="checkbox" ng-model="employee.sendMessage"></td>
    <td class="col-md-1"><input type="checkbox" ng-model="employee.editApps"></td>
</tr>

更新

我认为问题在于,当您在当前正在查看单个employee的循环中引用employees

正如我提到的,我从未使用过$index,所以我不确定,但我也会仔细检查你是否需要在那里引用它(因为你的工作代码根本没有引用它)

在你的代码中尝试更改:

<td class="col-md-1"><input type="checkbox" ng-model="employees.result.$index.editProfile"></td>

<td class="col-md-1"><input type="checkbox" ng-model="employee.result.editProfile"></td>

在确实需要引用的情况下,我会想象引用看起来更像:

<input type="checkbox" ng-model="employee.result[$index].editProfile">

作为索引通常被引用。