我有一个observableArray,它被一个ajax调用填充,看起来像
appModel.foo().bar().fooBarCategories()
[
Object:
id: Object
type: "integer"
value: "4986517"
name: "Adwords"
,
Object
,
Object,
...
]
我有一个选择,我希望optionsText成为“name”属性,值为“id.value”属性
喜欢:
<select id="fooBarCategory"
data-bind="
options: appModel.foo().bar().fooBarCategories(),
optionsText: name,
value: id.value"
></select>
但是说不起作用:
未捕获的ReferenceError:无法处理绑定“value:function (){return id.value}“消息:id未定义
那我怎么能实现呢?试过像value:$data.id.value
或
value:this.id.value
这就是我如何使用name属性:
optionsText:function(item) {
return item.name
}
但是如果与id属性相似
value:function(item){ return item.id.value }
然后生成的选项中的值attr保持空白
这里有一个小提琴http://jsfiddle.net/q65nz/1/
答案 0 :(得分:2)
我会建议这样做 创建一个函数因为它是一个对象所以不会采用usuall形式。
self.setValue = function (item) {
return item.id.value
}
现在称之为
<select data-bind="
options: appModel.foo().bar().fooBarCategories(),
optionsText: 'name',
optionsValue : setValue
">
</select>
您应该使用optionsValue
绑定而不是value
绑定