【发布时间】:2014-04-29 19:17:50
【问题描述】:
Here 是我的脚本:
angular.module('MyApp',[])
.directive('mySalutation',function(){
return {
restrict:'E',
scope:true,
replace:true,
transclude:true,
template:'<div>Hello<div ng-transclude></div></div>',
link:function($scope,$element,$attrs){
}
};
})
.controller('SalutationController',['$scope',function($scope){
$scope.target = "StackOverflow";
}])
和html:
<body ng-app="MyApp">
<my-salutation ng-controller="SalutationController">
<strong>{{target}}</strong>
</my-salutation>
</body>
问题是,当SalutationController 应用于my-salutation 指令时,$scope.target 对于嵌入元素不可见。但是如果我将ng-controller 放在<body> 或@ 上987654330@ 元素,它有效。正如docs 所说,ng-controller 创建了新的范围。
谁能解释一下,在这种情况下,该范围和指令的范围如何相互干扰?
如何将控制器置于指令上?任何提示将不胜感激。
【问题讨论】:
-
这有必要吗?除了
link参数之外,指令还可以在对象中使用controller参数。 -
@jedd.ahyoung 是的,您可以在指令上添加控制器选项,但在这种情况下,您将为所有指令实例使用相同的控制器。如果我的指令不需要任何控制器,或者我需要另一个控制器怎么办?!
标签: javascript angularjs angularjs-directive transclusion