簡體   English   中英

我如何將參數傳遞給ember.js中的路由器操作

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

在我的模板中:

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

在路由器中

doSomething: function(jqEvent){

}

但是,jqEvent始終是App.Router的實例。 我希望傳遞我的參數。我缺少什么?

謝謝。

使用最新版本的Ember可以正常工作,因此我懷疑您使用的是Ember的舊版本。

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

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

您傳遞給{{action}}的參數不會被當作文字。 它們被視為當前上下文中對象的鍵。

參見https://github.com/emberjs/ember.js/issues/1759https://github.com/emberjs/ember.js/issues/1796

從而,

{{action doSomething someProperty}}

將嘗試在當前控制器上查找someProperty屬性。

它是Ember的舊版本。 無濟於事,我目前正在等待我們的Ember升級合並到一起。但這不是原因,盡管路由器將在變化。

實際上是兩個部分,

  1. 當操作冒泡到路由器時,將向該操作傳遞兩個參數,即路由器和帶有附加在jqEvent.context的參數的jqEvent。
  2. 當我在chrome控制台中檢查參數時,我沒有看到它,因為Chrome進行了一項優化(至少在控制台中),可去除未使用的參數。 這確實不是Ember的錯,但它確實掩蓋了正在發生的事情。

    {{action doSomething someProperty}}

    doSomething:function(router,jqEvent){var someProperty = jqEvent.context; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM