javascript - Knockout JS 如何将数据绑定到静态表单元素
问题描述
我正在尝试在 knockout.js 中对表单元素进行数据绑定。但是我不希望元素在表单中是可编辑的,甚至不希望将元素显示给用户。
我能够正确地将值绑定到输入元素。但如果我可以从 HTML 或标签文本或跨度中提取值,我会更喜欢。所以下面的工作,但我无法改变它,所以它不是用户可以改变的输入。
<input id="txtProvider" name="txtProvider" type="text" data-bind="value: $root.session().Resource().provider" />
我尝试只使用带有占位符的隐藏元素,但这不起作用。
<input id="txtProvider" name="txtProvider" type="hidden" placeholder="WebEx" data-bind="value: $root.session().Resource().provider" />
有什么建议么?
在此先感谢您的帮助。
解决方案
你正在做的工作,或者应该工作,很好:
<form>
<input type="hidden" data-bind="value: myHiddenVal" />
</form>
function ViewModel() {
self.myHiddenVal = ko.observable('Foo');
}
ko.applyBindings(new ViewModel());
这将产生:
<input type="hidden" data-bind="value: myHiddenVal" value="Foo">
示例:https ://jsfiddle.net/thebluenile/myves32x/
虽然我不得不说,我当然不知道您的确切用例,但“从 HTML 元素中提取值”与 Knockout 或任何其他数据绑定框架的工作方式有点对立。如果用户不必编辑该字段,您可以将其完全保留在 UI 之外。我能想到的隐藏元素的唯一有效用例是,如果您将表单提交到服务器端脚本进行处理,而不是通过 AJAX 发送其内容。
推荐阅读
- javascript - 我无法访问 addEventListener 函数中的变量,并且我的全局值始终显示未定义
- php - PHPMailer从数据库发送base64图像
- java - 使用 BouncyCastle 生成 PBE-MD5-DES 加密密钥以与 OpenSSL pkcs8 兼容
- java - 在 android、firebase 中获取聊天应用程序的正确时间戳
- string - 从 PDF 中提取特定的文本字符串
- node.js - docker compose环境变量在nodejs容器中未定义
- linux - 替换 Shell 脚本中特定范围的 xml 属性值
- c++ - 我把一个shared_ptr放到了map中,但是为什么程序结束前对象就被破坏了呢?
- laravel - Laravel-Excel 从 v2 升级到 v3。缺少 NewExcelFile 的问题
- javascript - 如何在 Javascript 中合并对象?