Listview 我怎样才能表现出“我是谁?”;“没有结果”;在剑道移动列表视图中

Listview 我怎样才能表现出“我是谁?”;“没有结果”;在剑道移动列表视图中,listview,mobile,kendo-ui,kendo-mobile,Listview,Mobile,Kendo Ui,Kendo Mobile,我有一个新的剑道列表视图,它以无休止的滚动开始,问题是当列表返回NULL时,控制台中会出现一个错误。NULL不是一个对象。问题是,对于其他列表,我让加载程序出现,并且不停止加载,也不允许您执行任何操作。最好的解决办法是不显示结果,但我没有办法显示全部结果。datasource.total()始终显示0。我真的不知道该怎么做了。我希望能得到一些帮助。我将发布我的代码。对不起,我的英语不好 function funcion() { var dataSource_seguidores_articulo

我有一个新的剑道列表视图,它以无休止的滚动开始,问题是当列表返回NULL时,控制台中会出现一个错误。NULL不是一个对象。问题是,对于其他列表,我让加载程序出现,并且不停止加载,也不允许您执行任何操作。最好的解决办法是不显示结果,但我没有办法显示全部结果。datasource.total()始终显示0。我真的不知道该怎么做了。我希望能得到一些帮助。我将发布我的代码。对不起,我的英语不好

function funcion() {
var dataSource_seguidores_articulos = new kendo.data.DataSource({
    autoSync: true,
    transport: {
        read:  {
            url: "xxxxxxxx",
            dataType: "jsonp",
            data: {token: xxx, motivo: x}
        }
    },
    schema: {
        data: "results",
        total: "total"
    },
    pageSize: 10,
    serverPaging: true
});

$("#listview").kendoMobileListView({
    dataSource: dataSource_seguidores_articulos,
    template: $("#template").text(),
    endlessScroll: true
});
}

对于不显示和创建冲突的错误,最好的方法是执行以下操作:

<div data-bind="visible: hasData">
    <ul data-role="listview" data-bind="source: data" data-template="list-template"></ul>
</div>
<div data-bind="invisible: hasData">
    <span>No Records.</span>
</div>
if(datasource.total()==0) { 没有结果 } 其他的 { LISTVIEW的代码 }

PHPAJAXURLAPI返回

jQuery1910311110318871215_1397568743279(({ "results":null, "total": 1})

但数据源总计始终显示为0。提前感谢

您可能需要手动替换剑道列表视图内容。我知道,例如,剑道网格没有空的数据模板,所以在databound事件中,我检查tbody的表内容并从那里开始。在您的特定情况下,您可能需要测试ul.km-listview中有多少“li”标记标记项。如果长度为零,您可以插入显示“无可用项”的格式化li项:


我过去处理这个问题的方法是MVVM将我的列表的可见性和“无结果”消息绑定到项目的计数。比如:

<div data-bind="visible: hasData">
    <ul data-role="listview" data-bind="source: data" data-template="list-template"></ul>
</div>
<div data-bind="invisible: hasData">
    <span>No Records.</span>
</div>

如果您想要一个侵入性较小的解决方案,并且对于所有实例都可以使用通用消息,那么可以使用CSS来处理这个问题

[data-role="listview"]:empty::after {
    content: 'No records to show';
}
就我个人而言,我喜欢这样做,因为我不必通过空元素的ID,也不必使用JS来针对每个元素。它也不会改变DOM,这可能会阻止剑道正确运行。当记录可用时,此解决方案将正常更新


更新:此解决方案在IE11中存在问题。文本将出现在一些填充的列表中,并在屏幕因鼠标移动而绘制时立即消失

问题是它不起作用。长度总是带来undefined或数字,undefined不允许你做任何事情,total总是带来0。请发布如何在角度剑道中实现这一点。服务器返回
null
结果,但表明存在
1
记录,这似乎很奇怪。如果可能,让服务器返回一个空数组,而不是
null
。如果
DataSource.total()
似乎不起作用,请尝试
DataSource.view().length
<div data-bind="visible: hasData">
    <ul data-role="listview" data-bind="source: data" data-template="list-template"></ul>
</div>
<div data-bind="invisible: hasData">
    <span>No Records.</span>
</div>
var ds = kendo.DataSource({...});

ds.bind("change", function () {
    vm.set("hasData", ds.total() > 0);
});

var vm = kendo.observable({
    hasData: false,
    data: ds
});
[data-role="listview"]:empty::after {
    content: 'No records to show';
}