的javascript-如何使knockoutJS实时响应属性更改?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了的javascript-如何使knockoutJS实时响应属性更改?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1959字,纯文字阅读大概需要3分钟。
内容图文
下面的代码应该执行以下操作:
>输入新名称时,它将在范围内显示“ Welcome:xxx”.
>当我删除文本框中的所有字符时,跨度中将不会显示任何内容.
问题是,当我删除一个单词(假设文本框的默认值是“ Bill Gates”),并且删除了“ Gates”时,我希望跨度实时向我显示“ Bill”,而不是我离开字段时显示.
那么如何使KnockoutJS支持“实时”属性更改呢?我想看到输入时跨度发生变化,而不是在离开文本框或按“ Enter”键时发生变化.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Knock Out Sample</title>
</head>
<body>
Your Name, please: <input type="text" data-bind="value: myName" />
<br />
<span data-bind="text: myNameShown, visible: showWelcome" id="spName"></span>
</body>
<script src="KnockOutJS.js" type="text/javascript"></script>
<script type="text/javascript">
var model = {
myName: ko.observable("Bill Gates")
};
model.myNameShown = ko.dependentObservable(function () {
return "Welcome: " + model.myName();
}, model);
model.showWelcome = ko.dependentObservable(function () {
return model.myName() && model.myName().trim() != "";
}, model);
ko.applyBindings(model);
</script>
</html>
解决方法:
The answer by @Luis利用valueUpdate:与值绑定组合使用’afterkeydown’效果很好,但是如果您使用Knockout 3.2或更高版本,则有一个更好的选择:使用the textInput binding.此绑定更简洁,可以处理跨浏览器的怪癖.像这样使用它:
ko.applyBindings({myName: ko.observable('initial value')});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
Input: <input type="text" data-bind="textInput: myName" />
<hr />
Result: <strong data-bind="text: myName"></strong>
引用上述文档,了解textInput和value之间的区别:
Although the value binding can also perform two-way binding between text boxes and viewmodel properties, you should prefer textInput whenever you want immediate live updates. The main differences are:
- Immediate updates […]
- Browser event quirks handling […]
内容总结
以上是互联网集市为您收集整理的的javascript-如何使knockoutJS实时响应属性更改?全部内容,希望文章能够帮你解决的javascript-如何使knockoutJS实时响应属性更改?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。