この2つのディレクティブがあり、1つは互いにネストされています:
<envato class="container content-view-container" data-ng-cloak data-ng-hide="spinner">
<items data-ng-repeat="items in marketplaces"></items>
</envato>
そして、これら 2 つのそれぞれは次のように定義されます。
Application.Envato.directive("envato", ["$timeout", function($timeout){
var object = {
restrict : "E",
controller : "EnvatoAPIController",
transclude : true,
replace : true,
templateUrl : "templates/envato-view.php",
link : function(scope, element, attrs, controller) {
console.log(scope);
return controller.getLatestItems().then(function(data) {
scope.marketplaces = angular.fromJson(data);
scope.count = scope.marketplaces.length;
var tst = angular.element(element).find(".thumbnails");
/* $timeout(function() { scope.swiper = new Swipe(document.getElementById('swiper-container')); }, 5000); */
scope.spinner = false;
});
}
};
return object;
}]);
Application.Envato.directive("items", function(){
var iterator = [],
object = {
require : "^envato",
restrict : "E",
transclude : false,
replace : true,
templateUrl : "templates/envato-items-view.php",
link : function(scope, element, attrs, controller) {
iterator.push(element);
if (iterator.length === scope.$parent.$parent.count) { console.log(iterator); };
}
};
return object;
});
上記のコードの多くは、より大きなアプリケーションの一部であるため、あまり意味をなさないかもしれませんが、私の質問に当てはまることを願っています. 私がやろうとしているのは、ディレクティブのスコープ プロパティをディレクティブenvato
から変更することですitems
。反復があり、それがいつ完了したかを知りたいので、その反復中に追加された DOM 要素に対して別の操作を実行できます。
たとえばscope.swipe
、ディレクティブ内に を定義しenvato
、変更を監視するとします。ディレクティブitems
では、いつ行われるかを監視してからng-repeat
、上記で定義したスコープ プロパティを変更しますscope.swipe
。これにより、ディレクティブ内の変更がトリガーされenvato
、操作を実行できることがわかります。
十分に明確であることを願っています。そうでない場合は、より多くのコードを試すか、より具体的にしてみます。上記で説明したことをどのように達成できますか?
編集:console.log(angular.element(element.parent()).scope());
ディレクティブ内で: を使用items
すると、ディレクティブのスコープが得られることは知っていenvato
ますが、より良い方法があるかどうか疑問に思っていました。