AngularJS指令,带隔离作用域、ng重复和控制器
AngularJS指令,带隔离作用域、ng重复和控制器,angularjs,angularjs-directive,Angularjs,Angularjs Directive,函数指令(){ 返回{ 限制:'E', 模板:“{x}}”, 替换:正确, //作用域:{}, bindToController:{ 数组:'=', 答复:'=' }, 控制器:函数(){ var j=这个; j、 设置=功能(数据){ j、 答案=数据; }; }, 控制员:“j” }; } 当我取消注释范围并创建隔离范围时,该指令不再有效。我正在试图确定原因。 正常情况下,我仍然可以在ng repeat中访问控制器,在本例中,当我丢失控制器时,它仍然可以在$parent.j上使用。我认为有
函数指令(){
返回{
限制:'E',
模板:“{x}}”,
替换:正确,
//作用域:{},
bindToController:{
数组:'=',
答复:'='
},
控制器:函数(){
var j=这个;
j、 设置=功能(数据){
j、 答案=数据;
};
},
控制员:“j”
};
}
当我取消注释范围并创建隔离范围时,该指令不再有效。我正在试图确定原因。正常情况下,我仍然可以在
ng repeat
中访问控制器,在本例中,当我丢失控制器时,它仍然可以在$parent.j
上使用。我认为有三种解决方案
解决方案1是使其不在隔离范围内。解决方案2是将repeat中对
j
的每个引用转换为$parent.j
解决方案3是有一种方法可以使用
j
,而不必使用我不知道的$parent
这可能与replace:true
有关。如果将按钮
包装在div
中,它似乎可以工作!我做了一个小小的演示。可能是重复的。
function directive() {
return {
restrict: 'E',
template: '<button ng-repeat="x in j.array" ng-click="j.set(x)">{{x}}</button>',
replace: true,
//scope: {},
bindToController: {
array: '=',
answer: '='
},
controller: function() {
var j = this;
j.set = function(data) {
j.answer = data;
};
},
controllerAs: 'j'
};
}