2013-02-21 55 views
0

在我的模板路由器行动:我如何通过PARAMS在ember.js

<a {{action doSomething someParam}}>my cool link</a> 

在路由器

doSomething: function(jqEvent){ 

} 

然而,jqEvent总是App.Router的一个实例。我希望传入参数。我错过了什么?

谢谢。

+0

你用什么版本的emberjs? – mavilein 2013-02-21 23:05:10

回答

0

你传递给{{action}}不被视为文字的参数;它们被视为当前上下文中对象的关键字。

请参阅https://github.com/emberjs/ember.js/issues/1759https://github.com/emberjs/ember.js/issues/1796

因此,

{{action doSomething someProperty}} 

会尝试来查找someProperty财产电流控制器上。

+0

在RC1中,他们可以通过在他们周围放置引号来传递文字。在这种情况下,我相信'someProperty'应该是'jqEvent'的一个实例。 – Wildhoney 2013-02-21 23:15:39

0

使用Ember的most recent version它工作得很好,所以我怀疑你使用的是旧版本的Ember。

的jsfiddle:http://jsfiddle.net/G4esk/

App.ApplicationRoute = Ember.Route.extend({ 
    events: { 
     example: function(object) { 
      console.log(object.get('name'));    
     } 
    } 
}); 
0

这是Ember的旧版本。不能帮助,我目前正在等待我们的Ember升级合并。 但这不是原因,尽管路由器将会改变。

它实际上是两个部分,

    时动作冒泡的动作有两个参数,路由器和jqEvent一个连接在jqEvent.context帕拉姆路由器
  1. 当我在铬控制台中检查参数时,我没有看到它,因为Chrome有一个优化(至少在控制台中)剥离未使用的参数。这确实不是Ember的错,但它肯定隐藏了发生的事情。

    {{动作doSomething的someProperty}}

    doSomething的:函数(路由器,jqEvent){ VAR someProperty = jqEvent.context; }