在KnockoutJs中对可观察数组排序时UI不更新
UI not updating when sorting observable array in KnockoutJs
我面临的问题,当我排序可观察数组,数组得到更新,但不改变UI
代码:
模型代码:
function OrderByOptionModel(field, displayText, isSelected, dispIndex) {
var self = this;
self.field = field;
self.dispText = displayText;
self.isSelected = ko.observable(isSelected);
self.dispIndex = dispIndex;
self.click = function (data) {
if (data == null) return;
data.isSelected(!data.isSelected());
};
self.getOrderByOptions = function () {
return [
new OrderByOptionModel(OrderByTypes.INDUSTRY, 'Industry', false, 1),
new OrderByOptionModel(OrderByTypes.SUPERSECTOR, 'Super Sector', false, 2),
new OrderByOptionModel(OrderByTypes.SECTOR, 'Sector', false, 3),
new OrderByOptionModel(OrderByTypes.SUBSECTOR, 'Sub Sector', false, 4),
new OrderByOptionModel(OrderByTypes.COUNTRY, 'Country', false, 5),
new OrderByOptionModel(OrderByTypes.MARKETCAP, 'Market Cap', false, 6),
new OrderByOptionModel(OrderByTypes.ATOZ, 'A - Z', false, 7),
new OrderByOptionModel(OrderByTypes.DATETIME, 'Date Time', false, 8)
];
};
return self;
}
可观测的数组:
self.orderByOptions = ko.observableArray(OrderByOptionModel().getOrderByOptions());
排序代码:
self.orderByOptions().sort(function (l, r) {
return l.dispIndex > r.dispIndex ? 1 : -1;
});
但是UI没有得到更新,我不知道问题在哪里?
去掉observableArray赋值中的圆括号。
self.orderByOptions = ko.observableArray(OrderByOptionModel().getOrderByOptions);
knockout的问题是,当将东西绑定到可观察对象时,它会代表你调用函数。有时,只需删除返回数据的函数的括号并绑定到函数本身就可以修复它。
相关文章:
- 如何在范围值更改时使用 angularJs 更新 UI
- 在日期更改后更新Angular UI引导程序日期选择器选项
- 只有当alert()在带有AJAX的internet explorer中使用时,Javascript才会更新UI
- UI网格AngularJS-如何更新UI网格中的列标题
- UI中未更新Knockout ObservableArray
- JQuery UI 对话框在第二次单击时不会更新
- jQuery UI 滑块动画未更新 UI vValue
- Angular/UI路由器-如何在不刷新所有内容的情况下更新URL
- 从jQuery UI滑块更改为'noUiSlider'-用于更新动画进度滑块的函数
- 保持我的 UI 更新,而不会因请求而终止服务器
- JavaScript 函数和 UI 更新
- 为什么 JavaScript 在这里阻止 UI 更新(通过 jquery)
- 在jquery UI更新上设置对象属性
- Kendo UI更新和创建不起作用
- 如何延迟.live()直到UI更新
- 如何在浏览器中强制UI更新,而冗长的javascript计算正在进行中
- Material-UI:更新库后代码不工作
- Jquery美元.when阻塞代码执行和UI更新
- 如何在循环中使用jQuery UI更新变量
- 优化定期 UI 更新