関数を 2 つ以上のレベルのコンポーネントに渡す最善の方法は何だろうと考えていました。「&」バインディングを使用するときに関数ラップをスキップする簡単な方法はありませんか?
ユースケースは次のとおりです。
angular.module('app', []).component('app', {
controller: class AppController {
doSomething (data) {}
},
template: `
<sub-component on-do-something="$ctrl.doSomething(data)">
</sub-component>
`
})
ps: 私は ngRedux を使用しているため、このようなシナリオは非常に一般的です。
編集:
問題は、上記のコードが機能するためには、各内部コンポーネント コントローラーが次のようになることです。
.component('subComponent', {
bindings: {
doSomething: '&'
},
controller: function SubComponentController () {
this._doSomething = param => this.doSomething({data: param});
},
template: `
<inner-component do-something="$ctrl._doSomething(data)">
</inner-component>
`
});
.component('innerComponent', {
bindings: {
doSomething: '&'
},
controller: function InnerComponentController () {
this._doSomething = param => this.doSomething({data: param});
},
template: `
<sub-inner-component do-something="$ctrl._doSomething(data)">
</sub-inner-component>
`
});
そして、直接_doSomething
ではなく、受け継がなければなりません。doSomething
ps: ここではトランスクルージョンを使用していません