2013-02-14 55 views
0

我正在使用JQM + Phonegap开发应用程序。只有当页面注入到dom准备就绪时才添加内容vía回调

为了避免设备减速和崩溃应用程序,我使用JQM单页导航模型,因为它允许自动DOM大小管理。

当用户浏览并手动使用changePage('page.html')来处理用户交互时,我使用href =“page.html”动态注入页面到DOM中。

所以,就我conerned,对那些使用服务器的数据页,我需要:

  1. 负荷(注入),新的页面到DOM访问目标的div /容器
  2. 动态地将新的数据(追加)

请看看这个例子用于说明目的:

function loadData (myJSONObject){ 

    // inject page 
    $.mobile.changePage('page2.html'); 

    //load data 
    for(var i=0; i<myJSONObject.data.length;i++){ 
    name = myJSONObject.data[i].name; 
    link = myJSONObject.data[i].description; 

    // #listData is the target container from page2.html      
    $("<a />",{ 
     text: name, 
     href: link 
     }).appendTo(            
      $("<li />",{ 
      id: name, 
      }).appendTo('#listData')); 
    } 
由于JavaScript的异步行为10只

该代码产生一个空列表,因为JQM页面注入功能(S)花费的时间比加载数据不再

**需要注意的是:

  • 使用缩模型和changePage(” #target')的工作原理与的setTimeout(
  • 测试),并迫使数据装载区还有待工作,但我认为不是最佳的既不是一个良好的发展实践

问:是否有一个回调或方式仅在新页面完全注入到DOM时才开始加载数据,那么目标容器的可用性如何呢?

+0

查看文档的活动部分:http://jquerymobile.com/demos/1.2.0/docs/api/events.html。没有找到你自己的网页,我会建议仔细阅读文档。 – Jasper 2013-02-14 18:58:04

回答

0

事实上,我正在开发一个连接到web服务的复杂应用程序。这是一个webapp的移动版本。

我正在模拟一个MVC模型,所以每个页面都有自己的controller.js,model.js,view.js和一个html5页面(单页文档)。这就是为什么我使用changePage('page2.html')向DOM注入页面,让JQM框架照顾DOM,后退按钮functionallity,转换...

随着用户浏览页面被显示,如果需要新数据或者只是显示DOM中的页面(隐藏 - >显示)以及最后一个数据和“刷新”按钮或向下滚动加载新数据功能,则隐藏或注入去附着。

请对这个例子来看看:

试想一个应用程序来发现新餐厅3页。主页(显示您订阅的餐厅的最新消息),餐厅(所有餐厅的列表)和餐厅简介(信息和订阅/未定制按钮)。

因此,当用户从列表中点击一家餐馆时,我需要从服务器获取数据并从RestaurantProfile.html中放置到不同的目标包装中,但首先必须将此页面注入到DOM中,因为它是无法将数据加载到隔离页面,然后将其注入到DOM中。这是不可能的。

我甚至不知道该页面是否已经进入DOM或已被删除。这取决于JQM框架(如果需要,changePage()会执行loadPage())。我只需要知道哪个页面是需要的并且传递相应的数据。就这样。

现在,增加用户,用户配置文件,用户提要和评论的复杂性更多...它可以很容易地成为一个10页的应用程序。

这就是为什么我决定拥有单页文档,以保持“干净”的应用程序结构,因此未来可以轻松添加新功能。

pageinit事件 - 它必须放置在相应的页面中,并会触发一个函数allways。但是,正如我之前所说的,有时这是一个简单的导航情况(直到JQM navBar),有时我管理请愿书,这是我需要添加数据表单服务器的时候。

让分。如何知道我们在哪种情况?

$ .mobile.changePage('to',options)function - 让我们弄清楚,如果我的问题可以通过使用这个函数和页面加载事件来解决(如果你可以使用的话,我无法在代理中找到pageinit事件的相同选项参数)...

reloadPage>当需要新数据时,可以将其设置为true,尽管我不知道JQM框架将做什么,即使它在功能方面意味着什么。 ..

data>我真的需要能够将其设置为json对象。但我还没有使这项工作尚未...

我希望我正在解决的问题现在很清楚。

问题:

1)是否pageinit事件处理相同的 '选项' 的说法不是 页面加载事件?

2)如何将'options> data'参数设置为json对象,并在pageload事件中正确访问其内容?

3)reloadPage = true究竟需要什么?

相关问题