2015-11-19 45 views
1

我目前有一個數組被傳遞到我的函數,我想從數組中提取信息,所以我可以在頁面上顯示它。使用淘汰賽從陣列中提取信息

這是陣列的樣子:

EducationalClasses:[object, object] 

first object contains: 
    classId: "324342", 
    className: "English 101" 
second object contains: 
    classId: "231243", 
    className: "Reading" 

當我這樣做educationalClasses [0]我得到的結果在第一個對象。我想創造某種循環,使我認爲網頁的時候,我有:

<!-- ko foreach: educationalClasses --> 
    <div data-bind="text: className></div> 
<!--/ko--> 

我會得到英語101並閱讀顯示

這是我有我的視圖模型:

viewModel = function(educationalClasses){ 
    .... 
    self.className= ko.observable(educationalClasses.className); // what i want 
} 

我怎樣才能做到這一點正常等陣列中的所有項目都顯示沒有我不得不使用educationalClasses[0].className...educationalClasses[1].className

回答

0

技術上講,你不需要任何觀測˚F或者你在這裏做什麼。你只需要你的viewmodel有一個名爲educationalClasses的成員是一個數組(或者observableArray)。你可以將你的原始數據包裝在一個對象中,標註它,然後就可以了。

如果你想改變數組並讓視圖顯示更新,你需要一個observableArray。如果你想要顯示個別數據項目的變化,你也希望它們是可觀察的。

rawData = [{ 
 
    classId: "324342", 
 
    className: "English 101" 
 
}, { 
 
    classId: "231243", 
 
    className: "Reading" 
 
}]; 
 

 

 
viewModel = function(educationalClasses) { 
 
    return { 
 
    educationalClasses: educationalClasses 
 
    }; 
 
}; 
 

 
ko.applyBindings(viewModel(rawData));
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<!-- ko foreach: educationalClasses --> 
 
<div data-bind="text: className"></div> 
 
<!--/ko-->

+0

這看起來非常理解,並感謝所有幫助。但我不知道如果我失去了一些東西,但當我這樣做時,我得到了一個控制檯錯誤,指出'className'沒有被定義。 – 072et

+0

@ 072et然後,我想你錯過了一些東西。 :)爲什麼你不製作小提琴並從上面的內容開始,然後一直玩下去,直到有些東西不起作用。 –

+0

我認爲這與我的信息被填充的方式有關。我更新了數據看起來如何從我的結尾的jsfiddle。這裏是jsfiddle鏈接:http://jsfiddle.net/swxy6aqv/2/ – 072et