AngularJS指令未触发(部分视图和.remove())

时间:2014-07-10 21:10:53

标签: angularjs

我的主要概述页面中有一些部分视图(在不同的链接上运行)。这些部分视图中的每一个都有一个引用指令(扩展器)的元素。

我的问题是,如果我转到具有该指令的局部视图,然后返回主屏幕并转到不同的局部视图,该指令将无法在最新屏幕上运行。

partials加载了ajax调用,并使用视图中父级的.remove()删除。

我不确定问题出在哪里,所以这里有一些可能相关的代码。

我的扩展器指令:

angular.module("toolkit").directive("expander", ['$timeout',  function($timeout)
{
  function determine(scope, heightValue) {        
    if (scope.isExpanded) collapse(heightValue);
    else expand(heightValue);
  }

  function expand(heightValue) {
      //does expanding things
  }

  function collapse(heightValue) {
      //does collapsing things
  }
  return {
    restrict: 'A',
    link: function (scope, elm, attrs) {
        var height = 0;
        scope.$watch(attrs.expanderHeight, function (value) {
            height = value;
        });

        $timeout(
            function () {
                $(elm[0]).on('click', function () {
                    scope.$apply(determine(scope, height));
                });
            }
        )
    }
  };
}]);

部分视图的Html(它们都有相同的东西):

<div class="acct-sum round-a accordion-top">
    <div expander expander-height="170" class="title">
        <span class="ui-icon ui-icon-circle-plus"></span>
        <div class="accordion-inner">
            Irrelevant things here.
        </div>
    </div>
</div>

该指令在每个局部视图中运行,只要它是我第一次访问。但在从一个视图切换回另一个视图后,它将停止工作。我已经在其中加入了断点,它根本就没有出现过。

有什么想法吗?如果有人发现它相关,我可以发布更多代码。

编辑:

部分视图会在点击时加载,如下所示:

// Bind account summary links to load the accountHistory partial view.
$(".view-history").on("click", function (e) {
    e.preventDefault();
    hide();

    var acctId = $(this).data("account");
    var t = $("#body_content_wrapper");
    t.append("<div class='progress' />");


    // load the template from the server in lue of client-routing
    util.load({
        viewId: "accounthistory",
        target: t,
        action: util.config.baseUri + "accountHistory",
        type: "POST",
        data: { id: $(this).data("account") }
    })
    .complete(function (html) {
        $(".progress").remove();

        util.publish("telnot.views.showAccountHistory", { account: acctId });
    });
});

0 个答案:

没有答案