私は、ui-view(ナビゲーションバー)の外にコンポーネントがあるアプリケーションで作業しています。このコンポーネントには、$ locationが変更された後に起こる非同期イベントにリスナーを追加するディレクティブが含まれています。私はui-view内の多くの場所で同じ指示をしています。問題は、ui-view内のディレクティブが$ locationの変更ごとに再レンダリングされますが、ナビゲーションバー内のディレクティブは再レンダリングされず、リスナーが割り当てられないということです。 ディレクティブの再レンダリングを強制する方法はありますか?ui-viewの外側にあるangular.jsディレクティブをリロードする方法はありますか?
Index.htmlと:
<body ng-app="myapp">
<nav class="cf" ng-include="'app/components/registration/nav.html'"></nav>
<div ui-view autoscroll="true"></div>
</body>
nav.html:
<div ng-controller="RegistrationController">
<my-directive></my-directive>
</div>
directive.js:
function myDirective(WSService, ShoutingRoomService, VIDABOO_CONSTANTS, $rootScope, $scope) {
return {
scope: {},
replace: true, // Replace with the template below
bindToController: false,
link: function(scope, element, attrs) {
$rootScope.$on('SomeAsyncEvent', function(event, data) {
WSService.doWhenSomeAsyncEventHappens(function() {
changeSomethingVisibleInHTMLTemplate();
}) ;
});
},
template: '<div>ChangeThisWhenAsyncEventHappens</div>'
};
};