2016-04-28 58 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