gpt4 book ai didi

javascript - 有没有办法在 ui-view 之外重新加载 angular.js 指令?

转载 作者:行者123 更新时间:2023-11-30 21:01:36 26 4
gpt4 key购买 nike

我正在开发一个在 ui-view(导航栏)之外有一个组件的应用程序。该组件包含一个指令,该指令应向 $location 更改后发生的某个异步事件添加一个监听器。我在 ui-view 的许多地方都有相同的指令。问题在于,虽然 ui-view 中的指令会随着每次 $location 更改而重新呈现,但导航栏中的指令不会重新呈现,并且不会分配监听器。知道如何强制指令重新渲染吗?

索引.html:

<body ng-app="myapp">
<nav class="cf" ng-include="'app/components/registration/nav.html'"></nav>
<div ui-view autoscroll="true"></div>
</body>

导航.html:

<div ng-controller="RegistrationController">
<my-directive></my-directive>
</div>

指令.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>'
};
};

最佳答案

您是否考虑过使用 $compile强制 Angular 重新链接 $scope 和你的模板?

$compile 的快速总结:

The compilation is a process of walking the DOM tree and matching DOM elements to directives.

这是我的建议。尝试在您的代码中添加类似这样的内容:

$compile(angular.element('div.someElement').contents())($scope);

关于javascript - 有没有办法在 ui-view 之外重新加载 angular.js 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47089006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com