是否可以在AngularJS中为DOM注入一个控制器?

时间:2012-11-09 06:35:49

标签: controller angularjs inject

我对angularjs相对较新,我想做的是创建类似ngView的组件 所以有一个非常重要的过程是向DOM注入一个控制器 假设我们有一个DOM,

<div>
    <span>Name: {{name}}</span>
</div>

和控制器,

function InjectedController($scope) {  
   $scope.name = "Leo Yuan";  
} 

我想做的是将控制器“InjectedController”注入分区,
我试着像ngView那样编写代码 $(“div”)。contents()。data('$ ngControllerController',InjectedController);
但它仍然没有用,有什么不对吗?

1 个答案:

答案 0 :(得分:-1)

您可以通过将控制器直接包含在HTML中来完成此操作。确保将此HTML存储为模板或变量,然后将其作为字符串加载。

<div data-ng-controller="%%controller%%">
  <span>Name: {{name}}</span>
</div>

使用JavaScript将任何控制器替换为%% controller %% part。

然后直接运行或自己编译HTML

var templateHTML = "..."; //either download it with XHR or make it an inline template
templateHTML = templateHTML.replace('%%controller%%', injectedController);

//inject the $compile service into the function body
//grab the scope if it's not already there
$scope = $scope || angular.element(document).scope();

//this should run the controller automatically
$compile(templateHTML)($scope);