javascript - 如何将现有的 DOM 元素绑定(bind)到 KnockoutJS viewModel

标签 javascript jquery knockout.js

如果 JS 值发生更改,我将使用 KnockoutJS 更新 DOM(Knockout 为我们提供了此功能)。

默认的 Knockout viewModel 类似于以下 block :

Javascript:

var viewModel = {
    price: ko.observable(109)
}

HTML:

<span data-bind="text: price"></span>

现在,当价格发生变化时,Knockout 会自动更新 View 。 但我想要的是以下内容:

var viewModel = {
    price: ko.observable(jQuery("#price"))
}

<span id="price">99.00</span>

所以,我想将一个 DOM 元素绑定(bind)到我的 viewModel。模型中的价格属性初始化为值 99.00。当价格改变时(在 Javascript 中)#price 的 DOM 值也应该更新。

我希望你们清楚这个问题。

非常感谢您的宝贵时间!

最佳答案

您的 View 模型应按如下方式初始化:

var viewModel = { 
    price: ko.observable(jQuery("#price").text()) 
} 

<span id="price" data-bind="text: price">99.00</span> 

之后,您应该使用 javascript 来更新模型,而不是 View 。所以不是:

jQuery("#price").text('some new value');

..你应该写...

viewModel.price('some new value');

这种方法更符合 MVVM 模式。

关于javascript - 如何将现有的 DOM 元素绑定(bind)到 KnockoutJS viewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637212/

相关文章:

javascript - jquery datatables 在页面上导航时在分页表上重置所选行的数据

javascript - 在 Nightwatch 中选择并单击随机元素的自定义函数

javascript - javascript中嵌套函数的try/catch问题

jquery - 以编程方式添加目标空白属性失败

knockout.js - 我如何取消对使用 Knockout 3.0 的可观察数组的更改?

javascript - 调整大小时 Canvas 引用丢失

javascript - jQuery Mobile 可折叠 'expand' 事件未在 Cordova 应用程序中触发

javascript - Jquery 返回单选按钮组的错误选定索引

javascript - knockout 可观察数组计算

javascript - Knockout.js - 向服务器端发送的数据添加属性