Angular - 如何在父控制器范围内监视ngResource值?

时间:2013-07-03 01:07:40

标签: angularjs angularjs-scope

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

有没有人知道怎么解决这个问题?谢谢!

template.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>

的script.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错误,因为我在范围内的值未定义,我的应用程序仍在运行。看起来好像调用子控制器中的函数,然后加载资源,然后执行转发器,并再次对列表中的图像调用该函数。

0 个答案:

没有答案