Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有支持url片段的meteor路由器吗?i、 e.window.location.hash?_Meteor_Url Routing_Iron Router - Fatal编程技术网

有支持url片段的meteor路由器吗?i、 e.window.location.hash?

有支持url片段的meteor路由器吗?i、 e.window.location.hash?,meteor,url-routing,iron-router,Meteor,Url Routing,Iron Router,我最近使用了meteor的iron路由器,我很惊讶地看到使用路由器从一个页面浏览到另一个页面实际上会重新加载整个页面的内容。这是由于在从一个页面浏览到另一个页面时要更改url路径。它可能对搜索引擎浏览的网站有用,但构建一个web应用程序这不是我想要的 事实上,我期望基于片段的一些东西,例如,更改片段会将其放在会话中,以便我可以在模板中直接使用它。以下代码应该会产生想要的效果(jQuery): 但在使用我自己的解决方案之前,我想确保我没有重新发明轮子。是否有meteor路由器或任何其他框架支持基于

我最近使用了meteor的iron路由器,我很惊讶地看到使用路由器从一个页面浏览到另一个页面实际上会重新加载整个页面的内容。这是由于在从一个页面浏览到另一个页面时要更改url路径。它可能对搜索引擎浏览的网站有用,但构建一个web应用程序这不是我想要的

事实上,我期望基于片段的一些东西,例如,更改片段会将其放在会话中,以便我可以在模板中直接使用它。以下代码应该会产生想要的效果(jQuery):


但在使用我自己的解决方案之前,我想确保我没有重新发明轮子。是否有meteor路由器或任何其他框架支持基于片段的页面呈现(与路径相反)?

我认为这取决于您使用的浏览器。我已经有一段时间没有看过iron router了,但在非IE浏览器中,IEiron router使用HTML5历史推送状态,而IEiron router实际上不会重新加载整个页面,只要我们通过标签
或通过路由器功能
router.go(“/somePage”)
但是,在浏览器字段中手动引入url会重新加载整个页面(使用片段时不会出现这种情况)

对于那些希望动态地将片段放入会话的人,以下是我使用的完整代码:

function storeHashInSession()
{
  Session.set('hash', window.location.hash);
}

Meteor.startup(function()
{
    storeHashInSession();
});

$(window).on('hashchange', function()
{
    storeHashInSession();
});

这很奇怪,IronRouter使用HTML5历史推送状态来提供您所需要的。例如,查看这个iron router演示,它在现代浏览器中的表现应该与您期望的一样。我同意@saimount的观点,iron router应该为您的目的而工作——在我的应用程序中更改路由时,我绝对看不到页面重新加载。您是否出于某种原因将所有路由都设置为服务器端?或者,您可以使用page.js(),其中也有meteor软件包()。@saimeut好的,我知道了,我是手动从一个页面浏览到另一个页面,直接更改浏览器地址。我刚刚意识到使用实际链接测试的工作方式和我预期的一样。我个人认为目前可用的路由器在处理反应性方面有点奇怪。对我来说,真正的反应式路由器只会帮助您将路径反应性地映射到用户定义的一组反应性变量,如
会话
反应性dict
中的变量,然后您可以在其他逻辑中使用这些变量,从而保留反应性流。很高兴看到我不是唯一一个这样想的人。我正在开发一个这样工作的路由器包,但它还没有公开。顺便说一句,meteor有renderDynamic调用,它正是为此而设计的。
function storeHashInSession()
{
  Session.set('hash', window.location.hash);
}

Meteor.startup(function()
{
    storeHashInSession();
});

$(window).on('hashchange', function()
{
    storeHashInSession();
});