2016-04-28 56 views
0

我有一個數組如下:數據綁定過在knockoutjs陣列

self.arrayObj : Array[2] 
    >0:Object 
    >Display1 
    ->InnerObjects 
    >__proto 
    >1:Object 
    >Display2 
    -->InnerObjects 

我interntion是顯示出「Display1」和「顯示2」,其是字符串 我做的HTML結合如下:

<div data-bind="foreach: self.arrayObj"> 
<span data-bind="text:$data[0]"></span> 
</div> 

如何迭代數組並僅顯示文本?

+0

'$ data [0]'試圖從您的兩個Object中的一個名爲'0'的屬性中獲取一個值。你的問題沒有說明'Display1'和'Display2'是什麼。他們是屬性名稱還是字符串值?可以使用'text:name'來訪問'{name:'Display1「}' – user3297291

回答

0

我想回答我自己的問題。

當我們想使用Knockout js將對象與動態鍵和值綁定在一起時,這不是一件簡單的事情。如果我們有固定的鍵名,那麼它很容易。 我所做的是,轉換的JSON對象到2-d數組:

在js文件

var 2Darray = jsonObject.map(function(val) { 
    var keyname = Object.keys(val)[0]; 
    var value = val[keyname]; 
    return [keyname,value]; 
}); 

在HTML文件中,我們可以兩次結合它在一個循環:

<div data-bind:"foreach:2Darray"> 

    <div data-bind:"foreach: $data"> 

    <div data-bind:"text:$data[0]"> 
    <div data-bind:"foreach: $data[1]"> 
    <div data-bind:"text:$data.val"> 
     </div> 
    </div> 
</div> 

0

如果您的數組只是一個字符串數組,你應該做到以下幾點:

<div data-bind="foreach: self.arrayObj"> 
    <span data-bind="text:$data"></span> 
</div> 

如果你的陣列是具有例如對象的數組的屬性「名稱」,這是一個字符串,那麼你是這樣做的。 Knockout知道你在使用foreach,因此它知道你在循環時處於哪個元素。

<div data-bind="foreach: self.arrayObj"> 
    <span data-bind="text:Name"></span> 
</div> 
+0

data-bind =」text:Name「將不起作用,因爲屬性Name是no – user1400915

+0

這是一個例子,因爲您沒有告訴我們什麼arrayObj的確是。如果它是一個String數組,那麼第一個樣本就是你需要的。 – Yan

+0

這對你有幫助嗎?如果是這樣,請將其標記爲答案。 – Yan