2012-12-24 63 views
3

Ember中是否有支持Ember.Array/Ember.Enumerable的鍵值對象?Ember.js中的枚舉對象(鍵值映射)

我想在我的Handlebars模板中用{{#each}}進行迭代。

我的用例從服務器顯示任意的JSON(用戶定義字段)(示例如下)。我可以從嵌套數組遞歸創建視圖(使用幫助器each),但我無法迭代對象。我的計劃是查找(或寫入)一個將包裝JSON對象並允許它們可枚舉的對象。這樣做最好的方法是什麼?

我到目前爲止的想法是延伸/混合Enumerable/Array/ArrayProxy/ObjectProxy,將底層鍵值存儲存儲爲Ember.Array,並添加一個keys字段來存儲對象的鍵。然後,我可以使用setUnknownPropertyunknownProperty來設置/獲取底層值並保持keys同步。這種方法聽起來嗎?從服務器

JSON的

格式下面是一個例子(用戶文檔自己的鍛鍊數據)。 請注意,這只是一個例子;格式完全靈活,所以我無法創建Ember數據模型來模擬這些用戶定義的字段。總體而言,數據可以是任意複雜的JSON(散列,數組的任何嵌套度,原語)

{ 
    "bench_press":[ 
     { 
     "weight":95, 
     "repetitions":5, 
     "tags":[ 
      "warmup" 
     ] 
     }, 
     { 
     "weight":135, 
     "repetitions":3, 
     "tags":[ 
      "warmup" 
     ] 
     }, 
     { 
     "weight":155, 
     "repetitions":3, 
     "tags":[ 
      "warmup" 
     ] 
     }, 
     { 
     "weight":165, 
     "repetitions":2, 
     "tags":[ 
      "warmup" 
     ] 
     }, 
     { 
     "weight":185, 
     "repetitions":1, 
     "tags":[ 
      "warmup" 
     ] 
     }, 
     { 
     "weight":195, 
     "repetitions":1, 
     "tags":[ 
      "warmup", 
      "overshoot" 
     ] 
     }, 
     { 
     "weight":190, 
     "repetitions":5, 
     "tags":[ 

     ] 
     }, 
     { 
     "weight":190, 
     "repetitions":5, 
     "tags":[ 

     ] 
     }, 
     { 
     "weight":190, 
     "repetitions":5, 
     "tags":[ 

     ] 
     }, 
     { 
     "weight":190, 
     "repetitions":3, 
     "tags":[ 

     ] 
     }, 
     { 
     "weight":190, 
     "repetitions":2, 
     "tags":[ 
      "negatives" 
     ] 
     } 
    ] 
} 
+0

你的JSON有多麼隨意?你可以發佈一些示例數據,顯示你想要支持的不同格式,以及你想如何迭代它們?我不是專家,但我認爲這會非常有幫助。 – Aras

+0

@Aras我剛剛更新了一些例子的問題。基本上,數據格式可以是任何東西,因爲它是所有用戶定義的... –

+0

你應該看看一個新的路由器API:http://emberjs.com/guides/controllers/representing-multiple-models-with-arraycontroller/ 。它允許使用每個助手遍歷對象。 –

回答

0

至於我得到Ember.js理念,聲明把手模板是足夠保守的使用強調您的模板中的邏輯。

在上述情況下,我建議您使用ContainerView提供JSON作爲它的上下文。