【问题标题】:Ajax loaded data doesn't update layoutAjax 加载的数据不会更新布局
【发布时间】:2013-04-23 13:00:01
【问题描述】:

我使用 ajax 加载数据并使用 Knockout 填充我的页面。这一切都很好,当我将页面更改为#contacts 时,它看起来不错。但是,当#contacts 页面是我加载的初始页面时,我遇到了问题。例如。如果我加载www.mydomain.com/#contacts,加载的初始页面是列表页面,因此ko.bindinghandlers.listview 没有任何影响。我尝试重新创建页面,但这也不能完全正常工作,并非所有样式都按应有的方式应用。我的列表视图不仅仅是一个列表视图,它还包含一个控件组,用于制作带有复选框的列表视图。

$("#contacts").page('destroy').page();

$('#contacts').bind('pageinit', function() {
    $('ul').listview();
});

如何使用 Ajax 加载数据,将其(使用 ko)附加到我的 ul 并使其正确呈现。

如果#contacts 不是加载的初始页面,则如下所示:

#contacts 是加载的初始页面时,这是我设法获得的最佳结果:

【问题讨论】:

  • 我只是猜测,但也许在调用.page()之前绑定处理程序
  • 你能澄清一下这个问题吗?
  • @David 没有区别。结果相同
  • @UriAbramson 现已更新。希望现在更清楚了。
  • 试试这个$('#contacts').on('pagebeforeshow', function () { $('ul').listview().trigger('create'); });不要使用.bind使用.on-jsfiddle.net/Palestinian/Xcdwt

标签: javascript jquery jquery-mobile knockout.js


【解决方案1】:

每当您使用 JavaScript 更新列表视图时,您都需要在列表视图上调用 refresh

$('.selector').listview('refresh');

更多关于docs

【讨论】:

  • 我试过了,但是它不能正确渲染它。例如类标签不添加到h3标签,如果#contacts页面不是初始页面。
【解决方案2】:

pageinit() 第一次加载时可能不会被调用。 在此处添加一个 console.info 以确保...如果这是问题所在,那么只需确保在 load() 或您喜欢的时候调用它。是吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 2015-11-01
    相关资源
    最近更新 更多