删除文本绑定不能用于输入
Knockout text binding not working for input
作为一个javascript的初学者,我决定尝试一下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()中,但也不起作用。就像脚本没有运行一样。
尝试使用FireBug调试,我可以看到applyBinding被执行,并且viewModel对象确实包含正确的变量。
这里发生的事情可能很明显。如果你不能在这里看到,那么你能指出我在使用FireBug时应该注意什么吗?
编辑
在尝试了几种解决方案的组合后,我仍然有问题。一种解决方案是这样的:
<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。而且可观察对象根本不起作用。我不能通过写入输入字段来更新字段
输入标签应该绑定到name作为一个值,而不是一个文本
如
Name:<input data-bind="value: name"></input>
applyBindings必须在html完全加载后执行。通常,我从jquery调用它。如果你把包含applyBindings的脚本块放在需要绑定的html标签之后,
尝试:
<script type="text/javascript">
$(function () {
var viewModel = {
name: "Joe",
number: "13"
};
ko.applyBindings(viewModel);
});
</script>
. .如果你想要双向绑定(例如。当用户在输入框中输入
脚本应该写在绑定控件下面:
<div>Today's message is: <span data-bind="text: myMessage"></span></div><script type="text/javascript">
var viewModel = {
myMessage: "Hello"
};
ko.applyBindings(viewModel);</script>
相关文章:
- 用于输入文本字段的Javascript验证器,仅用于两位小数
- 如何允许HTML标记用于输入而不易受XSS攻击
- chrome扩展:用于输入的html页面
- jquery .focus 不适用于输入:first
- 我试过了,但调用成员单击不适用于输入按钮,它与其他按钮非常不同
- ng-change不适用于输入
- jquery .attr() 不适用于输入元素
- 所需的验证不适用于输入类型文件
- $_POST不适用于输入标记中使用的必需标记
- 用于输入用户信息的动态PHP代码
- ng模式,该模式允许字母数字,但在angular js中没有用于输入标签的空格
- 用于输入的字符控制器
- 为什么object.observe不适用于输入字段的value属性
- Javascript没有'不适用于输入验证
- jQuery- .css()不能用于输入
- 删除文本绑定不能用于输入
- Dojo:设置用于输入的默认文本框
- Jquery创建一个用于输入验证的函数
- 为什么这个只输入数字的函数实际上不能用于输入类型:数字
- 在Inline html中,ng-pattern不能用于输入类型Number