有没有办法表示路由闭包动作,而不是在组件垫片中写入它们?

Sar*_*hak 2 ember.js ember-components

我正在使用ember-route-action-helper

我有一个组件垫片看起来像这样:

{{component-name model=model 
action1=(route-action "action1") 
action2=(route-action "action2") 
action3=(route-action "action3") 
action4=(route-action "action4") 
action5=(route-action "action5") 
action6=(route-action "action6") 
action7=(route-action "action7") 
action8=(route-action "action8")
action9=(route-action "action9") 
action10=(route-action "action10")
action11=(route-action "action11")
action12=(route-action "action12") 
action13=(route-action "action13") 
action14=(route-action "action14")
}}
Run Code Online (Sandbox Code Playgroud)

PS以上操作未使用实际操作名称

有很多动作需要冒泡到路线,我不在我的ember应用程序中使用控制器.

由于行动太多,这看起来有点笨拙.有没有办法用另一种格式表示相同的信息,或者将其写在我的组件.hbs文件或.js文件中的其他位置?

Ed4*_*Ed4 7

你的问题相当于问"为什么这个功能看起来如此笨重?":

function(model, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

答案是:您需要以不同方式对代码进行分解.拥有15个参数的函数永远不是一个好主意,出于完全相同的原因,组件也是如此.

有几种方法可以更清楚地考虑这些代码.也许其中一些行为可以用于专用服务.也许其中一些可以分组为中间表示(就像一个对其有自己动作的模型).可能如果您没有通过创建不执行任何操作的"垫片"添加不必要的模板层,您可以直接将这些操作中的每一个传递到相关的子组件中,这会将它们分散到整个模板的逻辑位置.

在没有看到更多细节的情况下,我无法确定这里适当的策略是什么.