1

在我的角度应用程序中,我有一个控制器父子关系,如下所示。我的父控制器正在使用 ngResource 加载资源并在视图中进行一些渲染。我想在我的子控制器中使用来自父作用域的资源,但由于 ngResource 调用是异步的,所以尚未定义作用域中的 ImageUrls 值。我认为在子控制器中设置观察者是可行的方法,但它没有奏效。

有谁知道如何解决这个问题?谢谢!

模板.html

<div ng-controller="ParentController">    
    <div ng-controller="ChildController">
        <div ng-repeat='img in myResource.ImageUrls'>
           <div ng-show="doShowImg(img)">
           </div>
        </div>
    </div>
</div>

脚本.js

function ParentController($scope, $routeParams, MyResource) {
    $scope.myResource = MyResource.get({recipeId:$routeParams.recipeId}, function() {
        $scope.imageUrls = $scope.myResource.ImageUrls;
    });
}

function ChildController($scope) {
    $scope.$watch('imageUrls', function(imageUrls) {
        $scope.doShowImg = function(img) {
            if($scope.imageUrls.length = 5) {
                ...
            }
        }
    }
}

值得一提的是,虽然我收到了 javascript 错误,因为我在范围内的值未定义,但我的应用程序仍在运行。看起来好像调用了子控制器中的函数,然后加载了资源,然后执行了转发器,并在列表中的图像上再次调用了该函数。

4

0 回答 0