2014-06-18 356 views
0

您好我有一個JSON數組,像這樣試圖從JSON映射陣列使用映射到淘汰賽

[{ 
    "id": "537901a53513fa3374bec718", 
    "images": [], 
    "itemImage": "img/3.jpg", 
    "createdDate": "5/18/2014 6:53:25 PM", 
    "location": [ 
     -2.057802, 
     52.609711 
    ] 
}, 
{ 
    "id": "537901a53513fa3374bec710", 
    "images": [ 
     "img/17.jpg" 
    ], 
    "itemImage": "img/1.jpg", 
    "createdDate": "5/18/2014 6:53:25 PM", 
    "location": [ 
     -2.062251, 
     52.612397 
    ] 
}] 

我試圖使用ko.mapping.fromJSON/JS,但我一直搞亂感嘆: (

var viewModel = {}; 
在我的Ajax成功功能

viewModel.model = ko.mapping.fromJSON(data); 
    ko.applyBindings(viewModel); 

HTML

<div data-bind=" foreach: model"> 
     <div data-bind="text: body"></div> 
    </div>    

我試過下面的這個帖子,由John Papa回答,但我認爲我的數組是不同的。 Knockout JS mapping plugin confusion 我可以手動做,但是無聊的手動建立視圖模型:)。

也試過這一點,糊塗了進一步Can't map JSON object to ViewModel (knockout js)

是否有任何好心人能夠指出我在正確的方向?

+0

實際上是一個數據JSON字符串,或者已經是一個JavaScript對象?您可能需要使用ko.mapping.fromJS而不是 –

+0

與兩者一起使用它,讓它部分使用JS,但映射被搞砸了,所以它只映射一個項目到一個可觀察數組,thx – saj

+0

我剛纔使用上面聲明的對象來測試它,看起來很好。我不知道它是否可能是ajax調用本身 - 你能調試並檢查數據是否包含你期望傳遞給ko映射插件之前的內容嗎? –

回答

1

所有你需要做的是以下幾點:

var viewModel = ko.mapping.fromJS(data); 
ko.applyBindings(viewModel); 

你循環它們如下:

<table class="table table-striped"> 
     <tbody data-bind="foreach: $data"> 
      <tr> 

       <td data-bind="text: id"></td> 
      </tr> 
     </tbody> 
    </table> 

見這裏的例子:

http://jsfiddle.net/wr5W7/5/

+0

嗨,葉試過這個,但我如何訪問我的數組對象,我可以看到他們存在__KO_mapping_映射的屬性,一切都在那裏,項目是這樣的[0]。映射的屬性,如何迭代通過他們在HTML中與每個,這就是有點我卡住 – saj

+1

@saj看到循環更新。 – hutchonoid

+0

thx因爲你的代碼基本上工作,爲了簡潔起見,我沒有包括額外的所有JSON,但它們只是字符串,但是ID顯示大約10/50然後出現額外文本的負載,雖然沒有HTML綁定它!!!困惑了一下,我知道$ data是爲數組構建的,但是它不能從代碼中引用它,並不是關於映射的全部觀點是可觀察的,我們如何在代碼中映射後訪問它們以及在HTML中? – saj