无法让Knockout做一个简单的'选项'绑定

时间:2011-09-08 16:30:39

标签: javascript html knockout.js

我在淘汰赛中有以下简单设置

var data = { 
  'Divisions': [
    { 'divID' : '105' },
    { 'divID' : '103' }
  ]
};

var viewModel = ko.mapping.fromJS(data);

ko.applyBindings(viewModel);

以及未正确绑定的以下HTML

<select data-bind="
  options: Divisions, 
  optionsText: divID,
  optionsCaption: 'Choose...'">
</select>

onload我得到'ReferenceError:divID未定义'。

如果我使用以下绑定,则可以使用

<select data-bind="
  options: Divisions, 
  optionsText: function(item) { 
    return item.divID(); 
  }, 
  optionsCaption: 'Choose...'">
</select>

供参考:

Working binding in jsbin, with the ugly binding

Non working version in jsbin that looks like it should work, with the clean binding

我怀疑这一切都是由ko.mapping.fromJS引起的,它使Divisions中的每个孩子都成为一个可观察的,从而使我无法简单地将所有内容作为简单的属性名称访问,但我只是发现similar example正在做同样的事情!

1 个答案:

答案 0 :(得分:12)

您忘记了optionsText周围的单引号

<select data-bind="
  options: Divisions, 
  optionsText: 'divID',
  optionsCaption: 'Choose...'">
</select>