2つ以上のレベルのコンポーネントで関数を渡す最善の方法は何ですか? '&'バインディングを使用するときに関数ラップをスキップする簡単な方法はありませんか?AngularJS 1.5の内部コンポーネント間で関数を渡す最善の方法は何ですか?
angular.module('app', []).component('app', {
controller: class AppController {
doSomething (data) {}
},
template: `
<sub-component on-do-something="$ctrl.doSomething(data)">
</sub-component>
`
})
PS:ここ
は、ユースケースだ私はngReduxを使用していますので、このようなシナリオは非常に一般的ですEDIT:
問題がある:仕事に上記のコードのためにそれぞれの内部コンポーネントコントローラは次のようになります。
.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>
`
});
次に、dを渡す必要があります直接doSomething
の代わりにを所有しています。
PS:私は、あなたのサブコンポーネントのコントローラでラッパー関数を提供する必要はありません、ここで
サービスを使用する:ここで
は作業Plunkerのですか? ;-) –
@DmitriZaitsev私はreduxとsmart&dumbコンポーネントのコンセプトを使用しているので、理想的なソリューションではありません:( – Hodes
関数ラップの意味を説明できますか? –