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