我对angularjs相对较新,我想做的是创建类似ngView的组件 所以有一个非常重要的过程是向DOM注入一个控制器 假设我们有一个DOM,
<div>
<span>Name: {{name}}</span>
</div>
和控制器,
function InjectedController($scope) {
$scope.name = "Leo Yuan";
}
我想做的是将控制器“InjectedController”注入分区,
我试着像ngView那样编写代码
$(“div”)。contents()。data('$ ngControllerController',InjectedController);
但它仍然没有用,有什么不对吗?
答案 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);