2014-09-05 37 views
0

我需要從模型中訪問JSON數據,我在控制器中使用了「this.model」。從我在控制檯日誌中看到的「this.model」返回數組數組。Ember.js,HighCharts - 從控制器訪問JSON數據

App.CardsRoute = Ember.Route.extend({ 
model: function() { 
return Ember.$.getJSON('/cards'); 
} 
}); 

這是什麼是對的路徑/卡返回服務器:

[[1317888000000,372.5101],[1317888060000,372.4]] 

我想用我的餘燼HighStock數據(來自HighCharts)執行。它繪製的圖表與這個手動輸入的數據:

App.CardsController = Ember.ArrayController.extend({ 
    series: [{ 
      name : 'test', 
       type: 'area', 
       data :[[1317888000000,372.5101],[1317888060000,372.4]], 

...

但不能與此畫:

App.CardsController = Ember.ArrayController.extend({ 
series: [{ 
       name : 'test', 
       type: 'area', 
       data : this.model, 
... 

從我在控制檯中看到,this.model不僅返回數組與數據的數組,但也是其他特定於對象的對象,是這個問題嗎?如果是的話,如何訪問只有JSON返回的數據,所以我可以在控制器中使用它?

+1

不應該是'this.get('model')'在你的第二個控制器片段?而不是'this.model'? – MilkyWayJoe 2014-09-05 19:37:42

+0

我已經開始使用「this.get('model')」,但它與iam得到「未捕獲類型錯誤:未定義不是函數」 – klonodo 2014-09-05 19:41:14

+0

您可以顯示'console.log(this.model)'輸出? – 2014-09-05 19:43:39

回答

0

承諾成功後,您可以直接在路由器本身格式化數據。

當控制器被初始化時,這個方法也會運行一次並且會初始化。 要從控制器本身設置數據,請在json許諾成功後格式化數據。 例如:

App.CardsRoute = Ember.Route.extend({ 
    model: function() { 
    return Ember.$.getJSON('/cards'); 
    }.then(function(data){ 
    return [{ 
      name : 'test', 
      type: 'area', 
      data : data, 
      ... 
     }] 
}); 

這在控制器之後做到這一點

的代碼在jsbin http://jsbin.com/vekacayirugu/16/edit

這種格式會爲你工作粘貼。 參考:http://emberjs.com/guides/object-model/computed-properties-and-aggregate-data/

+0

我已經做了你發佈的內容(將控制器的所有內容從控制器移動到模型和使用數據),然後我在控制器「系列:function(){this.get('model')}。on('init') 「但是它仍然和以前一樣,沒有任何數據的空圖表 – klonodo 2014-09-05 20:31:44

+0

你現在不需要做任何這樣的操作,this.model會以你需要的格式將數據從路由器返回給控制器。您可以直接在模板中使用該數據進行檢查。看到我上面的答案。 「 – 2014-09-05 20:33:45

+0

與」系列:完全一樣「。模型「,也許我會在jsbin中做到這一點,所以你可以更清楚地看到它 – klonodo 2014-09-05 20:35:31