【发布时间】:2013-07-16 20:38:23
【问题描述】:
作为一个 Javascripts 的初学者,我决定尝试 Knockout,从非常简单的开始到更高级的。然而,我什至无法让它在一个非常简单的场景中工作。
我猜这个问题很简单,我有点不好意思在这里问这个问题。但我不擅长调试 Javascript,也不知道 bug 会如何表现出来。
这是asp.net MVC 3生成页面后的html源代码:
<html>
<head>
<title>Index</title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
</head>
<body>
<h2>Index</h2>
<script src="/Scripts/knockout-1.3.0beta.debug.js" type="text/javascript"></script>
<script src="/Scripts/knockout-1.3.0beta.js" type="text/javascript"></script>
<script type="text/javascript">
var viewModel = {
name: "Joe",
number: "13"
};
</script>
<script type="text/javascript">
ko.applyBindings(viewModel);
</script>
<ul>
<li>Name: <input data-bind="text: name"/></li>
<li>Number: <input data-bind="text: number"/></li>
</ul>
<ul>
<li>Name: <span data-bind="text: name"></span></li>
<li>Number: <span data-bind="text: number"></span></li>
</ul>
</body>
</html>
Joe 或 13 未绑定到输入或文本框。
尝试将其放入 ko.observable() 中,但 deos 也不起作用。就像脚本没有运行一样。
尝试使用 FireBug 进行调试,我可以看到 applyBinding 已执行,并且 viewModel 对象确实包含正确的变量。
这里发生的事情可能很明显。如果您在这里看不到它,您能否指出我在使用 FireBug 时应该注意什么?
编辑
在尝试了几种解决方案的组合后,我仍然遇到问题。使用一种解决方案,HTML 如下所示:
<html>
<head>
<title>Index</title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/knockout-1.3.0beta.debug.js" type="text/javascript"></script>
<script type="text/javascript">
var viewModel = {
name: ko.observable("Joe"),
number: ko.observable("13")
};
</script>
<script type="text/javascript">
$(function () { ko.applyBindings(viewModel); })
</script>
</head>
<body>
<h2>Index</h2>
<ul>
<li>Name: <input data-bind="text: name"></input></li>
<li>Number: <input data-bind="text: number"></input></li>
</ul>
<ul>
<li>Name: <span data-bind="text: name"></span></li>
<li>Number: <span data-bind="text: number"></span></li>
</ul>
</body>
</html>
我使用哪种 applyBindings 解决方案似乎并不重要,它们的工作原理都是一样的。
所以绑定最终有效,但仅适用于 IE 和 Firefox,但不适用于 Chrome。此外,可观察的根本不起作用。我无法通过写入输入字段来更新字段。
【问题讨论】:
标签: javascript firebug knockout.js