gpt4 book ai didi

knockout.js - KnockoutJS - 显示加载和无数据消息

转载 作者:行者123 更新时间:2023-12-04 23:59:52 26 4
gpt4 key购买 nike

我正在使用 KnockoutJS 并通过 ajax 加载我的 View 模型。在加载完成之前,我想显示一个“正在加载...”消息,如果没有加载数据,我想显示一个“没有结果”。信息。我最初的尝试如下所示:

<ul data-bind="template: { name: 'mentions-template', foreach: mentions.data }">
<li data-bind="visible: mentions.loaded() && mentions.data().length < 1">No mentions</li>
<li data-bind="visible: !mentions.loaded()">Loading...</li>
</ul>


<script type="text/javascript">

var viewModel = {
mentions: {
loaded: ko.observable(false),
data: ko.observableArray()
}
}

function loadData() {
$.post(action, function(result) {
viewModel.mentions.data = ko.mapping.fromJS(result);
viewModel.mentions.loaded(true);
ko.applyBindings(viewModel);
});
}

ko.applyBindings(viewModel);
loadData();
</script>

我预计第一个 li元素只会显示 viewModel.mentions.loaded是假的, viewModel.mentions.data包含一些项目,第二个 li会显示到 viewModel.mentions.loaded已设置为 false,但始终显示这两个项目。我究竟做错了什么?

最佳答案

当您在 ul 中拥有这些静态项目时你的列表,它们实际上并没有被绑定(bind),因为 Knockout 只是处理数组中的每个项目。

实现您想要的一种方法是:

<ul>
<!-- ko template: { name: 'mentions-template', foreach: mentions.data } -->
<!-- /ko -->
<li data-bind="visible: mentions.loaded() && mentions.data().length < 1">No mentions</li>
<li data-bind="visible: !mentions.loaded()">Loading...</li>
</ul>

sample : http://jsfiddle.net/rniemeyer/gw7bM/

关于knockout.js - KnockoutJS - 显示加载和无数据消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11586216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com