2013-08-22 158 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

相關問題