Controller 是否可以在AngularJS中向DOM注入控制器?

Controller 是否可以在AngularJS中向DOM注入控制器?,controller,angularjs,inject,Controller,Angularjs,Inject,我对angularjs比较陌生,我想做的是创建一个类似ngView的组件。 因此,有一个非常重要的过程是向DOM注入控制器。 假设我们有一个DOM <div> <span>Name: {{name}}</span> </div> 我想做的是将控制器“InjectedController”注入部门, 我试着像ngView那样编写代码, $(“div”).contents().data(“$ngControllerController”,In

我对angularjs比较陌生,我想做的是创建一个类似ngView的组件。
因此,有一个非常重要的过程是向DOM注入控制器。
假设我们有一个DOM

<div>
    <span>Name: {{name}}</span>
</div>
我想做的是将控制器“InjectedController”注入部门,
我试着像ngView那样编写代码,
$(“div”).contents().data(“$ngControllerController”,InjectedController)

但还是不行,出什么事了

您可以通过将控制器直接包含到HTML中来实现这一点。确保将此HTML存储为模板或变量,然后将其作为字符串加载

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

可以通过将控制器直接包含到HTML中来实现这一点。确保将此HTML存储为模板或变量,然后将其作为字符串加载

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

我想我知道是什么让它不起作用,把原因贴在这里,也许这对一些新手避免这种情况会有帮助$(“div”).contents().data(“$ngControllerController”,InjectedController);上面的代码很好,导致这个问题的真正原因是服务$compile的使用不当,我们不能在指令定义中编译整个元素,而只能编译.childNodes,这样我们自己就不会进入无限循环编译。很抱歉,您不应该在DOM中注入控制器。请解释你想要达到的目标first@FlorianF我的方案是创建一个名为myView的指令,它将在内部显示许多视图,每个视图都有一个控制器和一个模型,因此我可以创建一个多页面查看器,而无需重新加载页面。这是一种不好的做法吗?使用ng switch和ng include将允许您执行类似的操作,因为需求总是在变化,所以我们必须创建自己的指令。你能告诉我注射控制器的副作用是什么吗?我想我知道是什么使它不起作用,把原因贴在这里,也许这对一些新手避免这种情况会有帮助$(“div”).contents().data(“$ngControllerController”,InjectedController);上面的代码很好,导致这个问题的真正原因是服务$compile的使用不当,我们不能在指令定义中编译整个元素,而只能编译.childNodes,这样我们自己就不会进入无限循环编译。很抱歉,您不应该在DOM中注入控制器。请解释你想要达到的目标first@FlorianF我的方案是创建一个名为myView的指令,它将在内部显示许多视图,每个视图都有一个控制器和一个模型,因此我可以创建一个多页面查看器,而无需重新加载页面。这是一种不好的做法吗?使用ng switch和ng include将允许您执行类似的操作,因为需求总是在变化,所以我们必须创建自己的指令。你能告诉我注射控制器有什么副作用吗?
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);