2013-04-25 47 views
1

我正在使用Ember.js的最新版本。我有一個使用flot.js顯示條形圖的Ember應用程序。一個視圖綁定到一個單獨的對象控制器來動態更新圖表。我在這裏有一個簡單的jsbin演示:http://jsbin.com/edosaf/2/edit。請注意,此演示創建cardController對象而不是擴展它。下面是相關代碼:Ember.js - 如何將視圖綁定到由路由器創建的控制器實例

App.cardController = Ember.ObjectController.create({ 
    id: 1, 
    name: 'Visa', 
    chartData: [ [2011, 450], [2012, 550], [2013, 320] ] 
}); 

App.ApplicationView = Ember.View.extend({ 
    templateName: 'application', 
    chartValuesBinding: 'App.cardController.chartData' 
}); 

我需要改變上面的代碼,改爲延長創建它,同時仍然將它綁定到視圖的cardController。

我想在此演示中使用基於傳遞到url中的card_id的不同條形圖數據進行擴展。路由將看起來像#/ card /:card_id。我很困惑如何將我的ChartView綁定到我的Card ObjectController的不同實例。我的想法是有一個Cards ArrayController來管理所有的信用卡對象。然後有一個Card ObjectController用於管理活動卡,該活動卡將綁定到ArrayController以及ChartView。

綁定: 卡ArrayController =>卡ObjectController =>圖表視圖

我創建了一個嘗試,以實現所需的路由和卡ArrayController(應用程序無法正常工作),另一jsbin:http://jsbin.com/edosaf/4/edit

哪有我將視圖綁定到由ember路由器創建的控制器實例?在這個例子中,你會如何推薦構建應用程序應用程序以使用路由#/ card /:card_id將CardController對象綁定到ChartView?

回答

2

如何將一個視圖綁定到由該路由器創建的控制器實例?

的你的意見典型地,每個具有匹配的控制器單。例如,在ApplicationView內,您可以通過controller屬性訪問單身人士ApplicationController

無論何時您需要從視圖中訪問其他東西,都應該通過它的控制器來完成。然後使用needs陣列連接控制器。

ApplicationController = Ember.Controller.extend({ 
    needs: ['card'] 
}); 

ApplicationView = Ember.View.extend({ 
    chartValuesBinding: 'controllers.card.chartData'  
}); 
+0

感謝邁克!我不知道控制器可以像這樣在視圖中引用。 – Greg 2013-04-29 06:25:21