我有observableArray
(var 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}
?
答案 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等