如何在指令的控制器中使用隔离范围?
How to use isolate scope inside directive's controller?
我有一些非常简单的东西,类似于下面。我的问题是如何使隔离范围在指令的控制器内可用:(For a full jsbin version, click here!)
app.directive("data", function() {
return {
restrict: "E",
template: "<div>My Data</div>",
scope: {
myData : '='
},
require: "data",
controller: function(){
this.logData = function(){
console.log(scope.myData);
}
},
link:function(scope,element,attrs,ctrl){
console.log(scope.myData); //works!
ctrl.logData(); //scope is not defined
}
}
})
您需要传入作用域引用,就像使用常规控制器一样。这是一个简单的例子:
controller: function($scope){
this.logData = function(){
console.log($scope.myData);
}
},
您可以使用 bindToController 属性 来绑定声明
将范围内的属性直接隔离到指令中使用的控制器实例。在指令函数声明中遵循 DDO object 的示例:
var ddo = {
templateUrl: 'example.html',
scope: {
articles: '<',
title: '@'
},
controller: ExampleDirectiveController,
controllerAs: 'myCtrl',
bindToController: true
};
bindToController 设置为 true 允许您直接在控制器内使用隔离范围属性(在本例中为文章和标题)。
我有一些非常简单的东西,类似于下面。我的问题是如何使隔离范围在指令的控制器内可用:(For a full jsbin version, click here!)
app.directive("data", function() {
return {
restrict: "E",
template: "<div>My Data</div>",
scope: {
myData : '='
},
require: "data",
controller: function(){
this.logData = function(){
console.log(scope.myData);
}
},
link:function(scope,element,attrs,ctrl){
console.log(scope.myData); //works!
ctrl.logData(); //scope is not defined
}
}
})
您需要传入作用域引用,就像使用常规控制器一样。这是一个简单的例子:
controller: function($scope){
this.logData = function(){
console.log($scope.myData);
}
},
您可以使用 bindToController 属性 来绑定声明 将范围内的属性直接隔离到指令中使用的控制器实例。在指令函数声明中遵循 DDO object 的示例:
var ddo = {
templateUrl: 'example.html',
scope: {
articles: '<',
title: '@'
},
controller: ExampleDirectiveController,
controllerAs: 'myCtrl',
bindToController: true
};
bindToController 设置为 true 允许您直接在控制器内使用隔离范围属性(在本例中为文章和标题)。