Angularjs使用ng repeat缺少ng init的作用域值

Angularjs missing scope values for ng-init using ng-repeat

本文关键字:ng 作用域 init 缺少 使用 repeat Angularjs      更新时间:2023-09-26

嗨,我的页面中有以下html

<div ng-repeat="a in loc" ng-init="getValues(a)">
          <div>
           <select  ng-options="c.id as c.site for c in names" ng-model=a.id></select>
         </div>
           <div>
           <select  ng-options="a.id as a.name for a in val"></select>
         </div>
   </div>

在我的控制器中,我有

   $scope.getValues = function(a) {
        $scope.val = pRepository.getVals.query({ id: a.ie }, function (data) {
            $scope.val = data;
       });

我遇到的问题是,当ng repeat中的"loc"列表很小,有一两条记录时,它可以正常工作。当它有20条左右的记录时,它会错过一堆$scope.val值,并列出其中一些值。我试着用$promise,但没有成功。请让我知道我如何才能放慢ng重复或其他什么,这样它就加载了所有的vals。感谢

每次调用getValues(...)时,都会更新相同的$scope.val属性(它是ngRepeat创建的作用域的父级的val属性。由于您需要一个"本地"val属性,因此应该相应地修改代码:

<div ng-repeat="a in loc" ng-init="values = getValues(a)">
    ...
    <div>
        <select ng-model="someModel" ng-options="a.id as a.name for a in values">
        </select>
    </div>
</div>
$scope.getValues = function(a) {
    var data = [];
    pRepository.getVals.query({id: a.ie}, function (data) {
        data = data;
    });
    return data;
}

另请参阅简短演示