Knockout选项绑定引用属性

时间:2014-06-11 09:20:09

标签: javascript object knockout.js properties

我有一个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/

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>

Fiddle Demo

Fiddle Demo with Your Provided Data

您应该使用optionsValue绑定而不是value绑定