2016-04-28 44 views
0

使用JSON对象,但匹配的绑定我有一个observableArrayvar array)与JSON数据是这样的:选项由JSON属性

{id:0, text:'blah'} ... 

我值变量(var val)是完全一样的:{id, text}。 我的结合是

<select data-bind="options: array, optionsText: 'text', value: val"> 

但是,我是从AJAX方法服用阵列数据,我初始化valval = ko.observable({id:1, text:'blahblah'})和敲除无法比拟的两个对象(当然,也有不相同的对象)。

所以,我需要通过测试ID值,匹配功能的,如果我使用optionsValue结合,我的价值不会{id, text}了,但只有id

我该如何保留我的绑定为{id,text},但仅匹配id

+1

是的,如果你使用正确的代码示例,而不是污染你的描述,它会更好。 –

+0

我很抱歉,我被倾斜了,我的禅码并不是最好的。 感谢您的工作 – Tistkle

回答

0

我认为你是对数组(反之亦然)

在JavaScript数组混乱对象简单地从零开始的数字键项目的集合。数组被方括号包围,例如

var val = ['item 1'.'item 2','item 3']; 

您通过其索引编号以零开始获得项目,例如,

val[1] // Returns 'item 2' 

如果您删除某个项目,则该数组将自己从已删除(切片)项目中重新编号。

对象具有键(ID,文本)

var val = {id : 0, text : 'Text'}; 

您与任一方括号或点例如获得相关联的键的值

`val.id` 
`val[id]` 

如果将数据存储在数组中,可以使用索引作为id,例如,如果id = 0,val[0]将返回'item 1'

一旦您决定了结构,您可以决定如何检索项目。

注意一个数组可以容纳比字符串更复杂的对象,所以一个数组可以容纳你的对象{id:0,text'words'}但是你必须遍历整个数组,使用for或forEach等来找到该项目。如果你可以提供真实数据的更多细节,我可以详细说明使用哪种类型的ko.observable,ko.observableArray等。

+0

谢谢@brianlmerritt,我会再次尝试解释它:我有一个json对象{id,text}数组,但我需要ko只使用id来检查选项/值绑定中的相等性,价值也是{id,text}对象... 非常感谢您的回复。 – Tistkle