从Ember车把操作传递参数到控制器

时间:2012-12-02 06:05:36

标签: javascript ember.js

我想从我的把手脚本中向我的控制器发送额外信息;这是我的代码:

<a {{action "resetState" data="state1" }}>reset1 </a>

我无法在控制器中检索state1;如何将额外的字符串发送到后端?

3 个答案:

答案 0 :(得分:5)

The API says您可以传递多个参数。

html和把手:

{{officename}} 
<button {{action "actionTest" "hello" "goodbye" officename}}>See parameters through action in the console</button>

控制器:

actionTest: function(a, b, c){
   console.log(a);
   console.log(b);
   console.log(c);
},

See it in action in this jsbin

答案 1 :(得分:2)

您可以将一个或多个上下文对象传递给操作处理程序,方法是将它们包含在操作名称之后,如下所示:

{{action resetState state1}}

答案 2 :(得分:1)

除非您希望操作转到路由器,否则您可能还需要指定目标(target =“MyApp.someObject”或target =“this”)。如果您确实希望路由器获取消息,则需要向其发送一个已定义的对象,并使动态段为:objectname_id以从中获取对象,或使用deserialize方法。

route: '/service/:some_dynamic_segment',

    deserialize: function(router, params) {
       //params should equal {some_dynamic_segment: 'whatever you passed in'}
    }

如果您确实将操作发送到路由器以外的其他位置,请记住,其他事件都会被视图拦截,而不是控制器,以防您想要将所有这些内容保存在一起。