【发布时间】:2016-04-29 18:14:41
【问题描述】:
我想知道将函数向下传递到 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:这里我没有使用嵌入
【问题讨论】:
-
@DmitriZaitsev 这不是理想的解决方案,因为我正在使用 redux 以及智能和愚蠢组件的概念:(
-
你能解释一下你所说的函数包装是什么意思吗?
-
从你的例子中也不清楚内部 HTML 是否被嵌入或者它是否是内部组件模板的一部分。
-
@PeteBD 我现在正在编辑问题:)
-
您可以通过 props 或服务(即 Redux 存储)传递数据。
标签: javascript angularjs angularjs-compile angularjs-components