2014-03-03 30 views
0

型號:如何從視圖中獲取燼數據內容?

Blocks.NVD3Chart = Blocks.DSModel.extend({ 
    xAxis: DS.attr() 
    ,series: DS.attr() 
}) 

Blocks.NVD3Chart.FIXTURES = [ 
    { 
     "id": "02c6486ac0a8017400348bcdb2029c63asdf" 
     ,xAxis: [1,2] 
     ,series: [ 
     { 
      data: [10,20] 
      ,name: "Employment" 
     } 
    ] 
    }] 

路線:

Blocks.LetsseeRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.find('NVD3Chart') 
    } 
}) 

查看:

Blocks.LetsseeView = Ember.View.extend({ 
    templateName: 'letssee', 
    drawChart: function() { 
     console.log(this.get("controller.content")) 
     console.log(this.get("controller.model")) 
    }.on("didInsertElement") 
}) 

而我使用的是隱式控制器聲明。 這是在didInsertElement上調用的日誌語句結果的結果。 (http://imgur.com/E74see7

現在,問題歸結爲從控制器中檢索內容。控制器內容的長度爲0.模型確實存在,但它確實有一個內容。但是內容的第一個元素中的數據是未定義的。但是,_data屬性已定義,幷包含我需要的數據。我不想利用_data值,因爲它是一個原始的複製餘燼數據存儲,我不想與它混淆。在控制器/視圖內的路由中設置和檢索內容的正確方法是什麼?我有沒有做得不好?

+0

很多時候,視圖首次創建時模型並未完全解決。所以這個承諾在你的'didInsertElement'事件之前可能沒有實現。您應該讓頁面完成加載,然後查看容器中的視圖,並在所有內容確定後查看數據是否完整。 (這似乎不太可能,因爲設置了_data屬性,但我們應該先從最簡單的東西開始。) – GJK

+0

我試圖在控制檯的控制檯上進行查找,但不幸的是,數據仍然未定義。此外,控制器的模型或內容都不是承諾。所以沒有辦法添加'then'語句 – Jaime

+0

控制器的「內容」是模型。你不應該直接訪問該屬性,它只是用於PromiseObject。模型絕對應該是一個承諾。根據上面的代碼,它應該是一個'DS.PromiseArray'。 – GJK

回答

1

我做的解決方法是使用模型中找到的內容。即使在記錄對象時,數據未定義,並且所有數據都存儲在模型對象的_data內,因此對該對象調用.get(「data」)將返回預期結果。

this.get("controller.model.content")[0].get("data")