[英]Check if a sub-view is reloaded; angularjs, ui-router
我在angular js中使用ui-router來嵌套視圖。 我的一個父視圖中的指令要求監視是否重新加載了子視圖。 誰能告訴我如何查看視圖中的子視圖是否重新加載?
這是我的HTML
<body>
<header myDirective></header>
<div id="content" ui-view name="bodyContent"></div>
</body>
指令JS
myApp.directive('myDirective', function(){
return function(scope,element,attr){
scope.$watch('$viewContentLoaded', function(){
element.on("click", function(){
// do something
});
element.parent().find('#content').on("click", function(){
//do something
})
});
};
})
在這里, $watch
語句僅$watch
父視圖加載。 我需要做的是每次更改或重新加載子視圖(bodyContent)時都為#content
添加事件偵聽器。
我能夠通過使用角度的狀態變化事件找到解決方案。 這是我解決問題的方法:
到目前為止,我一直在觀察父視圖的$ viewContentLoaded變量,它並沒有太多幫助。 我不得不觀看子視圖的$ viewContentLoaded變量。 因此,首先,我使用scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState ))
檢查“狀態更改成功” scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState ))
這里,變量event
很重要。 它有一個我們關注的targetScope
變量。 現在我所$viewContentLoaded
就是看一下$viewContentLoaded
的$viewContentLoaded
變量並在其上添加事件偵聽器。 代碼看起來像這樣
myApp.directive('myDirective', function(){
return function(scope,element,attr){
scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState){
event.targetScope.$watch('$viewContentLoaded', function(){
element.on("click", function(){
// do something
});
element.parent().find('#content').on("click", function(){
//do something
})
})
});
};
})
我希望其他人將從中受益。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.