如何在ember.js中将params传递给路由器操作

how do I pass params to a router action in ember.js

本文关键字:路由器 操作 params 中将 ember js      更新时间:2023-09-26

在我的模板中:

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

在路由器中

doSomething: function(jqEvent){
}

然而,jqEvent始终是App.Router的一个实例。我希望传入我的参数。我缺少什么?

谢谢。

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

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

因此,

{{action doSomething someProperty}}

将尝试在当前控制器上查找CCD_ 2属性。

使用最新版本的Ember,它运行得非常好,所以我怀疑您使用的是旧版的Ember。

jsFiddle:http://jsfiddle.net/G4esk/

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

它是Ember的旧版本。无法控制,我目前正在等待我们的Ember升级被合并。但这不是原因,尽管路由器会改变。

实际上是两部分,

  1. 当操作冒泡到路由器时,会向操作传递两个参数,路由器和jqEvent,参数附加在jqEvent.conf中
  2. 当我检查chrome控制台中的参数时,我没有看到它,因为chrome有一个优化(至少在控制台中),可以去除未使用的参数。这确实不是Ember的错,但它确实掩盖了发生的事情

    {{action doSomething someProperty}}

    doSomething:函数(router,jqEvent){var someProperty=jqEvent.conf;}