角色控制器$范围在jquery remove()之后没有被销毁

时间:2015-05-06 11:37:20

标签: jquery angularjs destroy

在我的应用程序中,我有一个指令,可以将模板动态加载到包装器中。我如何以这种方式实现它的原因是有很好的过渡。 它似乎工作正常,直到我意识到,当我第二次加载相同的视图时,看起来该视图中的控制器是重复的。

其中一个控制器中运行$interval只在视图正确时才应用更改,但再次进入视图时会触发两次(实际上每次加载视图时都会触发一次)。

我尝试了$scope.$on('$destroy')但是从来没有为控制器启动,因为我用jQuery删除了元素。如何在触发current.remove()

时完全卸载当前视图中的控制器

这是取代视图的指令的片段:

function setView(view) {
    var target = $('<div id="' + view + '" class="view ' + dir + '"></div>');
    var templateName = "'views/" + view + ".tpl.html'";
    var template = angular.element('<div ng-include="' + templateName + '"></div>');
    var current = el.find('#' + currentViewId);

    if (current.length === 0) {
        current = el.find('.view.current');
    }

    el.append(target);
    target.html(template);
    $compile(template)(scope);

    currentViewId = view;

    setTimeout(function () {
        current.removeClass('current').addClass((dir == 'next' ? 'prev' : 'next'));
        target.addClass('current').removeClass(dir);

        setTimeout(function () {
            current.remove();
        }, 500);
    }, 50);
}

0 个答案:

没有答案