我有一个带有输入文本框的数据绑定
<input id="tColorCode" type="text" data-bind="value: ColorCode" />
Run Code Online (Sandbox Code Playgroud)
我无法访问设置视图模型的外部 JavaScript,所以我没有我需要的关于对象的信息,但是如果我单击一个元素,然后在处理程序中我可以更改它的值:
$("#tColorCode").live("click", function () {
//....
ko.dataFor(this).ColorCode("#ffffff");
}
Run Code Online (Sandbox Code Playgroud)
但是我需要在单击处理程序之外执行此操作,因此我尝试使用元素的名称,但它不起作用:
var c = $("#tColorCode");
console.log(c); //OK
ko.dataFor(c).ColorCode("#ffffff"); //TypeError: ko.dataFor(...) is undefined
Run Code Online (Sandbox Code Playgroud)
这可以用另一种方式完成吗?
谢谢!
您需要将特定的 HTML 元素传递给 method dataFor,但是,变量c是 jQuery 选择器,而不是元素。要从选择器中获取特定元素,您只需获取选择器的第一项:
var c = $("#tColorCode");
ko.dataFor(c[0]).ColorCode("#ffffff"); // use c[0] instead of c
Run Code Online (Sandbox Code Playgroud)
与事件处理程序情况的不同之处在于,事件处理程序this表示特定元素,而不是选择器,因此它可以正常工作。
| 归档时间: |
|
| 查看次数: |
7229 次 |
| 最近记录: |