KnockoutJS:当返回的数组为空时显示消息
KnockoutJS: Show message when the returned array is empty
我想显示一条消息,以防返回的任务数组为空。我用了这个:
<span data-bind="visible: tasksArr().length == 0">
There are no tasks yet.
</span>
但它不能正常工作。当我加载页面时,消息在内容加载到数组之前会显示一秒钟,因为tasksArr
是在请求完成获取内容之前声明的。有没有更简单的方法让它在加载完成后显示,而无需诉诸额外的可观察量?
正如你在这个小提琴中看到的,obervableArray的默认值是一个空数组。因此,未初始化的 obervableArray 和空的 obervableArray 之间没有区别。
有2个工作轮次:
声明更多可观察量:
function vm() {
var self = this;
self.tasksArr = ko.observableArray([]);
self.initilized = ko.observable(false);
self.canSee = ko.computed(function(){
var a = self.tasksArr().length;
return self.initilized() && a;
});
self.load = function () {
setTimeout(function () {
for (var i = 0; i < 100; i++) {
self.tasksArr.push(i);
}
self.initilized(true);
}, 1000);
}();
}
ko.applyBindings(new vm());
见小提琴
您也可以延迟绑定
function vm() {
var self = this;
self.tasksArr = ko.observableArray();
self.load = function () {
setTimeout(function () {
/*for (var i = 0; i < 100; i++) {
self.tasksArr.push(i);
}*/
ko.applyBindings(x);
}, 1000);
}();
}
var x = new vm();
见小提琴
我希望它有所帮助。
默认隐藏范围(display:none;)。这样,消息将在页面加载时隐藏,并且仅在任务Arr确实为空时才可见。
相关文章:
- 如果下载不成功,如何显示消息
- 如何在 jquery 中的速率按钮下方显示消息状态
- 删除所有可拖动元素后如何显示消息
- php表单验证n在表单上显示消息3秒钟并淡出
- 单击“点赞”按钮时显示消息
- javascript初学者-无法在屏幕上显示消息框
- 在表单提交后显示消息的方法
- 遍历列表,并在jQuery为空时显示消息
- 在jquery幻灯片登录表单上显示消息
- 如果文本筛选器在ng重复中未返回结果,则显示消息
- 以javascript显示消息框
- 在angular 1中,我如何检测angular是否受支持,并在屏幕上显示消息's不受支持
- 浏览器全屏显示,按键时不显示消息
- 选取随机数组元素,将其移除,并在没有更多可用元素时显示消息
- 仅当浏览器不是Google Chrome时显示消息
- 如果所有李都被隐藏,则显示消息
- 在提交表单和显示消息之前,如何检查表单输入是否全是数字
- 如果使用 JavaScript 登录失败,如何在登录页面中显示消息
- j查询验证未显示消息
- 为什么不显示消息