Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中的指令中使用控制器名称表达式(ng controller)_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 在AngularJS中的指令中使用控制器名称表达式(ng controller)

Javascript 在AngularJS中的指令中使用控制器名称表达式(ng controller),javascript,html,angularjs,Javascript,Html,Angularjs,我不想使用ng controller指定控制器名称,而是想通过指令中的属性指定控制器名称,然后在模板中替换它(我想用这种奇怪的方式来探索AngularJS) 以下是指向plunk的链接: e、 我正在努力做什么 <sample-drtv ctrl-name="drtvCtrl"></sample-drtv> 我在控制台上遇到以下错误: Error: Argument '{{ctrlName}}' is not a function, got undefined 我该

我不想使用
ng controller
指定控制器名称,而是想通过指令中的属性指定控制器名称,然后在模板中替换它(我想用这种奇怪的方式来探索AngularJS)

以下是指向plunk的链接:

e、 我正在努力做什么

<sample-drtv ctrl-name="drtvCtrl"></sample-drtv>
我在控制台上遇到以下错误:

Error: Argument '{{ctrlName}}' is not a function, got undefined

我该怎么做才能在表达式中替换
ctrlName
?我确信我不完全理解指令的概念,因此我犯了一个错误。

我建议采用以下结构:

<sample-drtv></sample-drtv>

请参阅Plunk:

需要使用表达式定义控制器的用例是什么?您正在尝试创建另一个ng-controller。已经有了一个。感谢回复。AngularJS是否首先尝试链接ng控制器指令?不替换表达式中的值。在计算ng控制器的表达式后调用我的指令的链接函数?为什么会这样?你知道吗?我也有同样的问题。是的,我必须动态声明控制器,因为我正在显示页面的元素列表。每个元素都由一个模板和一个在CMS中定义的控制器组成。在控制器声明中不能使用表达式。在源代码中查找“ngControllerDirective”。这里没有对表达式求值进行处理。这个问题有一些解决方法,但它们取决于您试图解决的确切问题。谢谢您的回复。我感谢你的帮助。我最初采用了这种方法,这肯定会奏效。然而,我很好奇,究竟是什么原因使我试图实现将不起作用?很抱歉,我没有投反对票。无论如何如果您能帮助我理解为什么我尝试做的技术上不起作用,我将不胜感激。如果你/有人能向我解释AngularJS是如何处理这种情况的,可能会更有帮助。再次感谢!
Error: Argument '{{ctrlName}}' is not a function, got undefined
<sample-drtv></sample-drtv>
<div ng-controller="drtvCtrl"> 
  <p>{{ptagcontent}}</p>  
</div>
var myModule = angular.module('ng');

myModule.directive('sampleDrtv',[function(){
  return {
    restrict: "E",
    replace: true,
    templateUrl: "sampleDrtv.html"
  };
}]);

function drtvCtrl($scope){
  $scope.ptagcontent = "AngularJS Rocks";  
}