1

私のAngularアプリでは、以下に示すようなコントローラーの親子関係があります。私の親コントローラは 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 エラーが発生していますが、アプリはまだ機能していることに言及する価値があります。子コントローラーの関数が呼び出され、リソースが読み込まれ、リピーターが実行され、リスト内の画像に対して関数が再度呼び出されるように見えます。

4

0 に答える 0