我有一些只能工作一次的 AngularJS 指令。当视图更改并且您返回它们不再工作时,不涉及页面刷新,但我们使用一个简单的视图加载系统,使用 ng-include 进行页面更改(子页面不是主路由)。
我有一些类似这样的标记。
<div class="row" ng-controller="mainCtrl">
<ul class="sidebar span3" sub-nav>
<li><a ng-click="changePage('users')">Users</a></li>
<li><a ng-click="changePage('posts')">Posts</a></li>
</ul>
<div class="span9" view-partial ng-include="route[active]"></div>
</div>
“sub-nav”指令具有更新“活动”范围变量的方法。然后我有一个指令来监听对“活动”变量的更改,如果值不同,则发出一个“pageChange”事件。(它们与控制器是分开的,因为它们不仅仅应用于一个)。一次只有一个控制器运行此代码,而且它似乎运行良好。
在 ng-include 中,我们使用 ng-repeat 循环数据,在这个循环产生的表格中,我们有一个删除按钮,其中应用了一个指令,就像这个
angular.module("myModule")
.directive("deleteBtn", function(delConf) {
require: "?ngModel",
link: function(scope, elm, attr, ngModel) {
elm.bind("click", function(e) {
// here i open a modal window and pass some data to it
// just as a delete confirmation the logic for it is tucked
// away in delConf
}
}
})
.directive("deleteConfBtn", function(delConf) {
require: "?ngModel",
link: function(scope, elm, attr, ngModel) {
elm.bind("click", function(e) {
// here i make the api request to delete the item and remove it
// from the scope
}
}
});
第一个指令应用于表中的删除按钮(即使视图发生更改,该指令也将始终有效)。第二个指令应用于引导模式窗口上的按钮。
第二个指令仅在页面刷新后才起作用。我认为这与范围有关,但我无法弄清楚为什么一个有效而另一个失败。
任何帮助将不胜感激。