在另一个内部更新ng-repeat中的模型

时间:2015-08-19 13:34:00

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-change

我正在对某些数据进行第一次ng-repeat循环,并对其他数据进行另一次ng-repeat循环。我在内部ng-repeat中添加了ng-change,它循环一些数据以填充带有“options / values”的select元素,ng-change必须监听select元素中的更改并在每次更改值时调用函数但是不会发生这种情况。

这是html代码

                    <tr ng-repeat="memo in memos" class="no-animate">
                        <td class="text-center">{{memo.memoStatus | localize:'ar'}}</td>
                        <td class="text-center">
                            {{memo.memoRequiredDate | date: 'yyyy-MM-dd'}}
                            <p ng-hide="memo.memoRequiredDate">----</p>
                        </td>
                        <td class="text-center">
                            <select ng-model="newInfo.selectedConsultantIndex" ng-change="updateConsultant(memo.caseId, newInfo.selectedConsultantIndex)" class="form-control">
                                <option value="">-- المستشارين --</option>
                                <option ng-repeat="consultant in consultants track by $index" value="{{$index}}">{{consultant.firstName}} {{consultant.lastName}}</option>
                            </select>
                        </td>
                        <td class="text-center">{{memo.court[0].name}}</td>
                        <td class="text-center">
                            <p ng-repeat="defendant in memo.defendant">
                                {{defendant.user.firstName}} {{defendant.user.lastName}} - {{defendant.role[defendant.role.length - 1]}}
                            </p>
                        </td>
                        <td class="text-center">
                            <p ng-repeat="client in memo.client">
                                {{client.user.firstName}} {{client.user.lastName}} - {{client.role[client.role.length - 1]}}
                            </p>
                        </td>
                        <td class="text-center">إختبارية</td>
                        <td class="text-center">{{memo.caseNumber}}</td>
                    </tr>

这是JS代码

 $scope.updateConsultant = function(){
    console.log('hello world');
} 

3 个答案:

答案 0 :(得分:1)

您应该尝试使用ngOptions进行选择: https://docs.angularjs.org/api/ng/directive/ngOptions

答案 1 :(得分:1)

问题原来是由另一个指令“angular-print printTable”引起的,该指令创建一个只包含文本值的新表,然后覆盖旧表。

答案 2 :(得分:0)

尝试使用观察者而不是ng-change

    $scope.$watch('newInfo.selectedConsultantIndex', function() {
      updateConsultant(...)
    });

您可能必须构建一个数组或其他数据结构,以支持您用于更改的任何逻辑。