具有隔离范围,ng-repeat和controllerAs的AngularJS指令

时间:2018-11-08 08:10:23

标签: angularjs angularjs-directive

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

取消注释作用域并创建隔离作用域时,该指令不再起作用。我正在尝试确定原因。 通常,我仍然可以访问ng-repeat中的controllerAs,在本示例中,当我丢失它时,它仍然可以在$parent.j上使用。我认为有3个解决方案。

解决方案1是不要将其置于隔离范围内。
解决方案2是将重复中的对j的每个引用都转换为$parent.j
解决方案3是有某种方法可以使用j,而不必使用我不知道的$parent

1 个答案:

答案 0 :(得分:1)

可能与import os base_path = "/path/to/files/" filenames = os.listdir(base_path) for f in filenames: source = base_path + f destination = base_path + f[:2] + "/" + f os.rename(source, destination) 有关。如果将replace: true包裹在button中,它似乎可以工作!我做了一个小小的here来演示。