部分更新后如何在ng-app范围之外编译html

时间:2014-06-27 07:56:46

标签: javascript asp.net angularjs

我有一个使用anguar.js的用户控件,并在其中的某处声明了div ng-app。 系统的另一部分没有使用angular.js,甚至没有引用它。

现在,问题是在部分更新html后(例如使用update-panel)我需要重新编译它(因为它被注入到DOM中)并且我在技术上无法做到这一点,就整个而言html和ng-app声明正在被替换。

我无法访问$compile服务(好吧,我可以使用$injector获取服务,但我在哪里获得$scope?)

function AfterPartialUpdate(containerElement) {
    var injector = angular.injector(['ng']);
    injector.invoke(function($compile) {
        $compile(containerElement)( ???need scope, which is lost );
    });
};

我可以在一些全局变量的初始页面加载时存储范围。 但是使用相同的范围重新编译会导致$$watchers集合和其他不必要的副作用逐渐增加......

我想应该有办法强制角度来执行它在初始页面加载期间执行的所有相同的javascript,即创建模块,遍历html,实例化控制器等等?

1 个答案:

答案 0 :(得分:2)

Injector为您提供$ rootScope服务。尝试使用它来编译元素:

var injector = angular.injector(['ng']);
injector.invoke(function($compile, $rootScope) {
    $compile(containerElement)($rootScope);
});