从 JavaScript 填充挖空视图模型
Populate knockout view model from javascript
我正在用knockoutjs替换大量的javascript/jquery代码,我正在努力找出最好的前进方向。我没有时间同时替换所有内容,所以我将不得不将淘汰逻辑与现有的 javascript 集成......
有没有办法从 javascript 填充一个不是从数据绑定属性调用的挖空视图模型?任何帮助都会很好,因为我无法在其他任何地方找到它(至少没有任何工作)。
我知道我在这里提到的不是"正确"的做事方式,但我正在尝试迁移部分 javascript 代码......目前,一次性完成所有操作不是一种选择。
(使用挖空 3.2)
编辑:通常,现有的javascript执行以下操作:
$('#productlist').append(productItemHtmlCode);
我宁愿让它做这样的事情:
ViewModel.productList.push(productItemObject);
如果我理解正确,目前你有这样的东西:
<div id='myDiv'>
current status is: <span id='statusSpan'>Active</span>
</div>
使用一些相应的JavaScript,可能是这样的:
function toggleStatus() {
var s= document.getElementById('statusSpan');
s.innerHTML = s.innerHTML == 'Active' ? 'Inactive' : 'Active';
}
你想改变它,以便javascript更新视图模型而不是操作DOM?
var app = (function() {
var vm = {
statusText: ko.observable('Active'),
toggleStatus: toggleStatus
}
return vm
function toggleStatus() {
vm.statusText = vm.statusText == 'Active' ? 'Inactive' : 'Active';
}
}) ();
ko.applyBindings(app,document.getElementById('myDiv'));
然后 html 将是
<div id='myDiv'>
current status is: <span id='statusSpan' data-bind="text: statusText"></span>
</div>
如果这就是你在说的,那就是Knockout的设计目的。 javascript更新视图模型,挖空操作DOM。
你给出的例子很容易在淘汰赛中表示。
该网页:
<div>
<table data-bind="foreach: products">
<tr>
<td data-bind="text: id"></td>
<td data-bind="text: name"></td>
<td data-bind="text: category"></td>
</tr>
</table>
</div>
并在视图中模型:
vm = {
products: ko.observableArray(), // empty array to start
addProduct: addProduct
}
return vm;
function addProduct(id, name, category) {
products.push({id: id, name: name, category:category});
}
等。
相关文章:
- 如何在视图模型contet更新更新上调用Jquery函数
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 在MVVM视图模型中处理应用程序范围的元素
- 将c#视图模型转换为javascript模型时转义HTML标记
- 使用knockout.js将数组绑定到视图模型
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 聚合物:在不同的视图模型中多次使用元素
- 使用AMD时未定义淘汰组件视图模型
- 如何在Knockout.js中选中复选框时更新视图模型及其依赖项
- 无法将对象列表从视图模型设置为 javascript 变量
- 挖空视图模型函数仅影响最后一个实例
- 挖空.js嵌套视图模型不起作用
- 为什么我的视图模型不起作用
- 挖空、视图模型位于其他对象和数据绑定中
- 如何将经度/经度值绑定到挖空视图模型方法
- 挖空.js:等待视图模型实例化完成
- 在Knockout视图模型中调用jQuery插件是一种有效的模式
- KnockoutJS:如何避免在applyBindings上运行视图模型函数
- 使用knockoutjs操作视图模型
- Kendo UI自定义验证不适用于模板和视图模型