使用 Knockoutjs 显示视图模型中数据的更好方法
Better way to displaying data from view model using knockoutjs?
我有一个具有单独层次结构的视图模型,在单击事件期间,我想为"单击"数据项显示辅助层次结构中数据的模式对话框。为了使它更容易理解,我在 jsfiddle 中模拟了一个示例,该示例实现了所需的结果(为简单起见,没有模式),但它是通过重复相同的标记而不是修改来自单个标记组的数据来完成的。
var FoundingFathersViewModel = function(data) {
var self = this;
self.foundingFathers = ko.observableArray([]);
//click
self.detail = function(father) {
//get the selected Founding Father's positions HTML and
//set the HTML of the detail div
var html = $('#'+father.id()).html();
$('#detail').html(html);
};
var mapping = $.map(data, function(item) { return new FoundingFather(item); });
self.foundingFathers(mapping);
};
var FoundingFather = function(item) {
this.id = ko.observable(item.id);
this.name = ko.observable(item.name);
this.positions = ko.observableArray(item.positions);
};
ko.applyBindings(new FoundingFathersViewModel(data));
jsfiddle 代码只是修改 CSS 显示属性以显示正确的详细信息。我想会有一种"更干净"的方法可以做到这一点。任何帮助将不胜感激。如果没有更优雅的解决方案,我也想知道。https://jsfiddle.net/jvz6gktm/2/
我建议转向selectedItem
的方法。单击总裁会将该总统设置为所选项目,这是填充详细信息部分的内容。
查看我更新的小提琴:https://jsfiddle.net/jvz6gktm/5/
详细区域:
<div id="detail" data-bind="with: selectedPresident">
<div class="positions">
<div data-bind="foreach: positions" class="detail">
<h5 data-bind="html: position" />
<h6 data-bind="html: yearsActive" />
</div>
</div>
</div>
选择:
self.selectedPresident = ko.observable();
self.selectPresident = function(father) {
self.selectedPresident(father);
};
作为旁注:如果你使用KNOCKOUT,不要使用jQuery来弄乱DOM,你只是在自找麻烦。
相关文章:
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 有没有更好的方法可以测量从Ajax调用返回数据所需的总时间
- 将数据加载到地图上的更好解决方案
- 更好的数据结构来处理这个数组
- 从网页获取数据的更好方法,而不是使用DOM和HTML元素
- 设计具有数据持久性的web应用程序的更好方法
- 更好地设计使用 HTML5 localStorage 存储的数据
- 使用 Knockoutjs 显示视图模型中数据的更好方法
- 在使用Ajax仅检索数据库中的数据之间,如何更好地从html结构中的数据库中检索数据
- 从数据网格获取行数据的更好方法
- 加速了ajax/javascript,目前检索数据时滞后太多.必须有更好的方法
- 使用Javascript从JSON填充数据.更好的代码设计方法
- 预排序数据或Angular orderBy哪个性能更好
- 如何用数字数据填充HTML画布?是否有更好的替代方案来创建可用于Conway'《生命的游戏》
- 如何在php中传递$.getjson数据,更好的是使用laravel的@foreach
- 服务器端还是客户端处理原始数据更好?
- 检查jqxgrid是否没有数据要显示(为空)的更简单或更好的方法
- 使用超时循环将数据加载到iframe的更好选项
- 更好的页面间数据传递方式:HTML5存储vs Angular服务
- 如何更好地定义JQuery数据表列呈现