Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS指令,带隔离作用域、ng重复和控制器_Angularjs_Angularjs Directive - Fatal编程技术网

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'
  };
}