2013-10-01 46 views
3

我的問題有點泛泛。什麼是路由和控制器的最佳概念與在find中查找燼。查找路由和控制器的查詢概念

我有數據過濾的API。數據請求由

this.store.findQuery('dataModel', {"q": JSON.stringify({"filters": filters})}); 

之後,我將它們顯示在表格視圖中。過濾器通過模板中的表單視圖進行更新。

我當前的解決方案: 窗體視圖設置控制器參數和控制器的按鈕調用動作。控制器操作加載參數,執行findQueryset('content',data)

在大多數情況下,我看到了定義model: function() ..在Route中的概念和setupController: function(controller, model)controller.set('content',model)。我喜歡這個「設置」,因爲'content'是RecordArray(不是PromiseArray),我可以很容易地將它用於數據表和其他JavaScript插件。我認爲我的解決方案不好。

回答

0

我覺得你的概念是正確的,我一直在使用流程如下:

在你的路由器:

App.Router.map(function() { 
    this.resource('search', { path: '/query/:filters' }); 
}); 
App.SearchRoute = Ember.Route.extend({ 
    model: function(params) { 
     return this.store.findQuery('dataModel', {"q": JSON.stringify({"filters": params.filters})}); 
}); 

在你的HTML,只要綁定,這將導致新的搜索路線的動作, 類似如下:

<button {{action "doSearch"}}>Search</button> 

在你的控制器:

App.SearchController = Ember.ArrayController.extend({ 
... 
actions: { 
    doSearch: function() { 
     var query = buildYourQueryObject(); 
     this.transitionToRoute("search", query); 
    } 
} 

點擊按鈕後,應用程序將轉換到您的搜索路徑,並且「查詢」將被序列化併發送到Route中,並且Route.model()將嘗試基於序列化參數提供。

注意:代碼已被簡化,您可能需要添加更多內容才能使其工作