无法让 Knockout 执行简单的“选项”操作绑定

发布于 2024-12-03 09:14:22 字数 1081 浏览 0 评论 0 原文

我在淘汰赛中进行了以下简单设置

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>

供参考:

在 jsbin 中工作绑定,带有丑陋的绑定

jsbin 中的非工作版本看起来应该可以工作,具有干净的绑定< /a>

我怀疑这个这一切都是由于 ko.mapping.fromJS 使 Divisions 中的每个子项都成为可观察的,从而使我无法简单地以简单的属性名称来访问所有内容,但我刚刚找到了一个 类似示例正在做完全相同的事情!

I've got the following simple setup in knockout

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

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

ko.applyBindings(viewModel);

and the following HTML that does not properly bind

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

onload I get 'ReferenceError: divID is not defined'.

If I use the following binding, it works

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

For reference:

Working binding in jsbin, with the ugly binding

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

I suspect that this is all being caused by ko.mapping.fromJS making every child in Divisions an observable, thus making it so that I can't simply access everything as a simple property name, but I just found a similar example that is doing the exact same thing!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九命猫 2024-12-10 09:14:22

您忘记了 optionsText 周围的单引号

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

You forgot the single quotes around your optionsText

<select data-bind="
  options: Divisions, 
  optionsText: 'divID',
  optionsCaption: 'Choose...'">
</select>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文