2013-08-22 157 views
1

如何使以下代码在文档中附加?AngularJS - 是否有可能从代码编译和链接模板?

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,而是成为一个角度应用程序 - 以便它反映范围的变化,具有事件处理程序等。

回答

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); 
    }); 
} 
+0

如果我更改了rootcope属性以使其反映我附加到文档的内容,那么该如何操作?我的意思是我不需要插入HTML,而是一个工作的应用程序,这是绑定到范围和事件/等? – Evgenyt

+0

@Evgenyt更新。 – zsong

相关问题