AngularJS - 是否可以从代码中编译和链接模板?

时间:2013-08-22 16:32:47

标签: javascript angularjs

如何让以下代码将 2 附加到文档?

var $injector = angular.injector(['ng']);

$injector.invoke(function ($compile, $rootScope) {
    var link = $compile('<p>{{1+1}}</p>');
    var newElement = link($rootScope);

    $(document.body).append(newElement);
});

我现在在浏览器中看到的是

{{1+1}}

修改

我希望添加到body元素,不仅仅是插入静态HTML,而是成为一个有角度的应用程序 - 这样它反映了范围的变化,有事件处理程序等。

1 个答案:

答案 0 :(得分:3)

您需要将其绑定到$scope而不是$rootScope,将行更改为

function ctrl($scope) {
    var $injector = angular.injector(['ng']);

    $injector.invoke(function ($compile) {
        var link = $compile('<p>{{1+1}}</p>');
        var newElement = link($scope);
        $(document.body).append(newElement);
    });
}

或者,您可以使用$interpolate模块。

function ctrl($scope, $interpolate) {
    var $injector = angular.injector(['ng']);
    $injector.invoke(function ($compile) {
        var link = '<p>{{1+1}}</p>';
        var exp = $interpolate(link)({});
        $(document.body).append(exp);
    });
}