2013-02-21 17 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; }