淘汰“检查”绑定不起作用

时间:2012-11-27 20:41:42

标签: binding checkbox knockout.js

我是淘汰赛的新手,我找到了一个复选框绑定的例子,这在我的网站上非常有用。 链接到示例:http://knockoutjs.com/documentation/checked-binding.html

我试图将它应用到我的页面但它没有用,然后我试图复制这个例子而不改变任何东西,但它仍然没有用。我在不同的浏览器(Chrome,Firefox,IE)上尝试过它,包括不同版本的淘汰库,但它仍然没有用。 我不知道我做错了什么,请帮忙!

以下是此示例的代码:

<!DOCTYPE html>
<head>
<script type='text/javascript' src='http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.1.0.js'></script>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dokument bez tytułu</title>
</head>

<body>
<p>Send me spam: <input type="checkbox" data-bind="checked: wantsSpam" /></p>
<div data-bind="visible: wantsSpam">
Preferred flavors of spam:
<div><input type="checkbox" value="cherry" data-bind="checked: spamFlavors" /> Cherry</div>
<div><input type="checkbox" value="almond" data-bind="checked: spamFlavors" /> Almond</div>
<div><input type="checkbox" value="msg" data-bind="checked: spamFlavors" /> Monosodium Glutamate</div>
</div>

<script type="text/javascript">
var viewModel = {
    wantsSpam: ko.observable(true),
    spamFlavors: ko.observableArray(["cherry","almond"]) // Initially checks the Cherry and Almond checkboxes
};

// ... then later ...
viewModel.spamFlavors.push("msg"); // Now additionally checks the Monosodium Glutamate  checkbox
</script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

您所看到的是一个片段,而不是一个完整的例子。你需要做几件事。

您需要applyBindings

ko.applyBindings(viewModel);

你需要在DOM加载后执行此操作(或者淘汰赛会非常沮丧)。

这是example

我稍微更新了我的示例,以便更容易看到复选框实际上是绑定的。复选框列表下面有一个spamFlavor列表,当您选中并取消选中复选框时,这些列表会发生变化。