2014-08-30 91 views
2

我的流星应用程序在桌面上按预期工作,但由于更改路由时不必要的总页面刷新,移动体验慢。流星:整个页面只在移动时刷新移动到新的路由W /铁路由器

我已经使用“模拟触摸屏”选项在Galaxy开发工具上测试了我的应用程序,并在移动Chrome中使用了Galaxy S4。当点击触发铁路路由器的按钮或链接路由到新的路由时,整个页面将刷新,而不是包含模板的单页(即页眉和页脚与标签一起重新加载,整个页面)。当“模拟触摸屏”选项处于非活动状态并且按钮和链接被点击时,会发生什么以及在桌面上发生了什么,这是正常行为,并且{{> yield}}模板的切换非常快。如预期的那样,页面的其余部分不刷新。我只知道,当“模拟触摸屏”选项处于活动状态时,首先触发启动事件触发,然后触发点击事件,导致整个页面刷新。

什么是造成这种情况,以及如何解决它的任何想法?

一些示例代码如下:

//makes the button clicked make the page go back 
'click .glyphicon-chevron-left' : function(e) { 
e.preventDefault(); 
history.back(); 
}; 


// when clicked goes to a preference page 
<a id='Preferences' href="{{pathFor 'pref'}}" data-toggle="collapse" data-target=".nav- collapse"> Preferences </a> 

使用流星版本0.9.0.1用下面的包: 不安全 标准的应用程序的程序包 铁路由器 旋 铁路由器进步 单页登录 accounts-ui accounts-password animate-css meteor natestrauser:connection-banner mizzao:bootstrap-3

编辑:错误是由非包相关的第三方JavaScript文件引起的。如果我能确定问题的具体原因,将进一步更新。

+0

嘿,如果你禁用'铁路由器progress',并设置一个装载模板会发生什么? – 2014-08-31 09:58:18

+0

@NathanM我刚刚删除了'iron-router-progress'。我已经有一个加载模板集,现在我实际上在加载内容之前在桌面浏览器上看到加载模板。我之前根本没有看到它。但是,这并没有解决问题。它仍然会重新加载整个页面。现在,在重新加载之前,甚至在加载模板可以运行之前,我都能快速看到来自单页面登录闪存的登录框。任何其他想法?谢谢。 – Zleman1593 2014-08-31 12:22:37

+0

我也刚刚删除了'single-page-login',但所有这些都阻止了登录框的闪烁,而只是通过更长的旋转模板来替换。所以'单页面登录'不会导致这个问题,我会把它加回去。无论出于何种原因,触发事件(我没有在我的代码中使用)导致整个页面重新加载。 – Zleman1593 2014-08-31 12:42:37

回答

0

我有同样的问题。 刚刚删除axw:ratchet

2

我解决了这个问题。

Template.back.events({ 
     'click #back': function (evt) { 
      window.history.back(); 
      evt.preventDefault(); 
     }, 
     'touchstart #back': function() { 
      window.history.back(); 
      evt.preventDefault(); 
     } 
    }); 

Template.layout.events({ 
    'touchstart a': function (evt) { 
     console.log(evt); 
     evt.preventDefault(); 
     Router.go($(evt.currentTarget).attr('href')); 
     return false 
    } 
}); 
相关问题