与json对象绑定但由json属性

时间:2016-04-28 12:18:52

标签: knockout.js

我有observableArrayvar array)这样的json数据:

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

我的值变量(var val)完全相同:{id, text}。 我的绑定是

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

但是,我从ajax方法中获取数组数据,并且我将val初始化为val = ko.observable({id:1, text:'blahblah'})并且淘汰赛无法匹配这两个对象(当然,还有不一样的对象)。

所以,我需要通过测试id值匹配函数,如果我使用optionsValue绑定,我的值将不再是{id, text},而只是{{1 }}

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

1 个答案:

答案 0 :(得分:0)

我认为你将对象与数组混淆(反之亦然)

在Javascript数组中,它只是一个项目集合,其数字键以零开头。数组被方括号包围,例如

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

您可以通过索引编号获取项目,该编号从零开始,例如

val[1] // Returns 'item 2'

如果删除某个项目,则该数组会从已删除的(切片)项目重新编号。

对象有键(id,text)

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等