问题: 当我绑定'&'在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
。
不确定我在这里做错了什么。任何帮助或方向表示赞赏!
答案 0 :(得分:0)
发生这种情况是因为您的绑定配置不正确。 Angular将所有驼峰案例名称转换为烤肉串案例someFn -> some-fn
。您只需将输入绑定更新为以下内容:
<div ng-repeat="type in fC.types">
<repeater type="type" some-fn="fC.someFn()"></repeater>
</div>