通过 Ajax 注入时未运行的角度代码

Angular code not running when injected via Ajax

本文关键字:代码 运行 Ajax 注入 通过      更新时间:2023-09-26

我对Angular很陌生,因此找到了自己的方式。

我知道ng控制器将在页面加载上运行。角度HTML元素将根据ng-controller的操作进行更新。

我想通过 AJAX 注入我的 html 代码,它由 ng 控制器组成。这意味着这将在页面加载后注入。

注意到我的角度代码没有被执行。有没有办法重新初始化角度?或者注册新控制器并运行它?

问题是 Angular 无法识别您使用 jquery 进行的任何 dom 操作。例如附加到 dom 等。

您需要编译并链接要以这种方式注入的任何 html。我会说你想使用指令来做到这一点。

示例代码(如果您从控制器内执行此操作)

var template = '<div ng-repeat="a in [1,2,3,4]">{{a}}</div>'
var element_to_add =  angular.element(template)
var linkFn = $compile(element_to_add);
linkFn($scope);
var target_element = $(css_selector)
target_element.html(element_to_add)// or target_element.append(element_to_add)

但就像我说的,从控制器附加到 dom 不是一个好主意。在指令中执行此操作。

虽然这可能不是您正在寻找的确切解决方案,但我相信这可能是一个足够接近的解决方案;

$routeProvider
    .when('/customers',
        {
            templateUrl: '/app/views/template.html',
            resolve: resolveController('/app/controllers/dynamicController.js')
        });