2014-03-27 56 views
8

我有有一個按鈕與像 {{動作「創建」}} 和內部的動作創建我寫像this.transitionTo(「page.new」)的作用的部件; 但我收到一個異常像無法讀取屬性'輸入'的undefined任何人都可以回答嗎?只是想知道是否可以從一個組件路由?我們可以從一個呃js中的組件路由嗎?

+0

能告訴你負責組件的代碼? –

回答

4

我發現答案是possible.we可以使用簡單地使用下面的代碼從我們的組件行動

App.Router.router.transitionTo('new route');

,我們會盡快回電這一點,我們可以在其中設置新路線的模型。使用下面的代碼。

App.Router.router.transitionTo('your route here').then(function(newRoute){ 

    newRoute.currentModel.set('property','value'); 

}); 
+2

這似乎不再適用於Ember 1.11 – Tomas

0

注入是你想要做的最後一件事。你溝通路線和組件之間的行動方式是使用sendAction方法Send Action

template.hbs

{{your-component action="nameOfYourRouteAction" }} 

route.js

export default Ember.Route.extend({ 


ratesService: Ember.inject.service(), 
    model() { 
    //return yourdata 
    }, 


    actions: { 
    nameOfYourRouteAction(...args){ 
     this.transitionTo(...args); 
    } 
    } 
}); 

在component.js

import Ember from 'ember'; 

export default Ember.Component.extend({ 

    actions: { 
     toggleTransition: function(...args) { 
      this.sendAction('action', ...args); 
     } 
    } 
}); 

component.hbs

<button {{action "toggleTransition" 'your route'}}>Change Route</button> 
+0

在組件模板中,您可以免費獲得#link-to helper,但無法在組件js中複製該行爲沒有任何關於傳遞消息的麻煩,這總是一件麻煩事。特別是如果你有幾個組件層下來。 – Epirocks

+0

以及我認爲它比反模式路由注入更好;) –

相關問題