1

我有一些只能工作一次的 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
            }
        }            
    });

第一个指令应用于表中的删除按钮(即使视图发生更改,该指令也将始终有效)。第二个指令应用于引导模式窗口上的按钮。

第二个指令仅在页面刷新后才起作用。我认为这与范围有关,但我无法弄清楚为什么一个有效而另一个失败。

任何帮助将不胜感激。

4

0 回答 0