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