我正在使用:
创建的指令切换return {
restrict: 'E',
templateUrl: '/src/templates/noise/swatches.html',
link: link,
controller: "swatchesController"
};
和
<swatches-directive></swatches-directive>
使用:
return {
restrict: 'E',
templateUrl: '/src/templates/noise/swatches.html',
link: link,
require: "ngController"
};
和
<swatches-directive ng-controller="swatchesController"></swatches-directive>
这似乎对属于其他指令的现有手表产生了意想不到的副作用,这些指令针对swatches-directive指定的范围变量。根据我的理解,新方法引入了一个新范围,因此将监视变量分配给父范围似乎应该可以工作,但这些监视器拒绝触发。
上面使用的两种方法之间是否存在根本差异?
答案 0 :(得分:0)
几点需要注意:
答案 1 :(得分:0)
return {
restrict: 'E',
templateUrl: '/src/templates/noise/swatches.html',
link: link,
require: "ngDirective", //Get the controller of that directive
link : function(scope, element, attributes, ngController){
//With require, you say: get the controller of that directive. You can
//then use it as 4th parameter (ngController)
}
};
注意:您可以传递多个控制器
return {
restrict: 'E',
templateUrl: '/src/templates/noise/swatches.html',
link: link,
require: ["ngDirective1", "ngDirective2"], //Get the controller of that directive
link : function(scope, element, attributes, controllers){
var ctrl1 = controllers[0];
var ctrl2 = controllers[1];
//Require can be a string or, as this example, an array.
}
};
内部传递的指令必须在您的指令中。
如果不是,您可以说:在^
的容器元素上找到它:
require : '^ngDirective'