2013-02-22 20 views
1

我有以下的控制,我想冒泡使用事件發送如何手動調用在ember.js RC1路線

App.PersonController = Ember.ObjectController.extend({ 
    page: function(page) { 
    var model = PersonApp.Page.create({id: page}); 
    this.send("person.page", model); //should bubble up ... 
    } 
}); 

這裏是我的路線設置

PersonApp.Router.map(function(match) { 
    this.resource("person", { path: "/" }, function() { 
     this.route("page", { path: "/page/:page_id" }); 
    }); 
}); 

這裏是一個簡單的頁面模型(墊片基本上)

PersonApp.Page = Ember.Object.extend({                         
}); 

雖然我使用的路線「person.page」,我通過我的有效模型得到以下錯誤(貌似路由器沒有這個路由?)

未捕獲錯誤:沒有處理事件'person.page'。

如果它可以幫助調試器/路由器的關係,我在我的控制器中發現,如果我傾倒this.get(「目標」)......

_debugContainerKey: "router:main"

,如果我再挖......並打印此

this.get(「目標」)。獲得(「路由器」)

我看到一個路由器瓦特/我的currentHandlerInfos陣列下路線......不知道我是否應該是這樣深,但

...另一個輕微的更新

如果我這樣做(完全成熟)似乎修改window.location的,但我的路線上的模型/ setupController掛鉤從不打

this.get(「目標」 ).get('router')。transitionTo(route,model);

回答

3

我認爲,send只是用於路由事件。假設你的控制器會打電話發這樣的:

//in the controller 
this.send("personPage", model); 

// a matching Route 
App.PersonRoute = Ember.Route.extend({ 
    events : { 
    personPage : function(page){ 
     // this should be called 
    } 
    } 
}); 

對於你的情況,你需要利用transitionTo(你的路由器上的財產是太多了,我想訪問Ember.Router的路由器實例有再次路由器性能。很迷惑:-))。

this.get("target").transitionTo("person.page", model);