角1.6.1'&'约束问题

时间:2017-02-05 12:09:48

标签: javascript angularjs angularjs-directive angularjs-scope

问题: 当我绑定'&'在ng-repeat(或者没有atmat)的情况下,我似乎无法触发父范围的功能。

HTML

<div ng-repeat="type in fC.types">
  <repeater type="type" someFn="fC.someFn()"></repeater>
</div>

家长控制器

function formControllerFn(){
  var vm = this;
  this.types = ['a', 'b', 'c', 'd'];
  this.someFn = function(){
    console.log("type");
  };
}

转发器组件

formtest.component('repeater', {
  controller: repeaterFn,
  bindings: {
    type: '<',
    someFn: '&'
  },
  template: `<div><span>{{$ctrl.type}}</span> <span ng-click="$ctrl.someOtherFn()">remove me</span></div>`
});

function repeaterFn(){
  var vm = this;
  this.$onInit = ()=>console.log(this.type);
  this.someOtherFn = function(){
    console.log(vm.someFn);
    console.log("someOtherFn");
    vm.someFn();
  };
}

点击remove me时,它会调出vm.someFn泛型函数和文本&#34; someOtherFn&#34;但不会触发父someFn

不确定我在这里做错了什么。任何帮助或方向表示赞赏!

optimization

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为您的绑定配置不正确。 Angular将所有驼峰案例名称转换为烤肉串案例someFn -> some-fn。您只需将输入绑定更新为以下内容:

<div ng-repeat="type in fC.types">
  <repeater type="type" some-fn="fC.someFn()"></repeater>
</div>

Plunkr