【问题标题】:Knockout options binding reference property淘汰赛选项绑定参考属性
【发布时间】:2018-02-01 10:21:35
【问题描述】:

我有一个 observableArray,它由 ajax 调用填充,看起来像

appModel.foo().bar().fooBarCategories()
[
Object:
  id: Object
     type: "integer"
     value: "4986517"
  name: "Adwords"
, 
Object
, 
Object,
...
]

我有一个选择,我希望 optionsText 成为“名称”属性和值“id.value”属性

喜欢:

<select id="fooBarCategory" 
  data-bind="
      options: appModel.foo().bar().fooBarCategories(), 
      optionsText: name, 
      value: id.value"
></select>

但它不起作用说:

Uncaught ReferenceError: Unable to process binding "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/

【问题讨论】:

  • 查看更新后的答案。注意optionsValue 而不是value

标签: javascript object knockout.js properties


【解决方案1】:

好吧,我建议这样做 创建一个函数,因为它是一个对象,所以不会采用通常的形式。

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 绑定

【讨论】:

  • 嘿,非常感谢! ,你能调整一下,让我的小提琴奏效吗?您将看到 id 对象的区别,即对象本身 jsfiddle.net/q65nz/1
  • 没问题。我自己第一次找到了这个解决方案。哈哈哈。从来不知道可以做到这样。刚试过,它奏效了。然后分享...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2013-12-06
  • 2013-02-04
  • 2021-04-28
  • 2012-09-23
  • 2019-01-05
相关资源
最近更新 更多