我有一些非常简单的东西,如下所示。我的问题是如何在指令的控制器中使隔离范围可用:(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
}
}
})
答案 0 :(得分:1)
您需要传入范围引用,就像使用常规控制器一样。这是一个简单的例子:
controller: function($scope){
this.logData = function(){
console.log($scope.myData);
}
},
答案 1 :(得分:0)
您可以使用bindToController属性绑定声明的内容 隔离范围中的属性直接指向指令内使用的控制器实例。在指令函数声明中跟随DDO对象的示例:
var ddo = {
templateUrl: 'example.html',
scope: {
articles: '<',
title: '@'
},
controller: ExampleDirectiveController,
controllerAs: 'myCtrl',
bindToController: true
};
bindToController设置为true允许您直接在控制器内使用隔离范围属性(在本例中为文章和标题)。