0

我创建了一个项目来轻松共享内容。你可以在这里查看我的项目: SharingProject

您可以使用 user@example.com 和 123456 作为密码来测试站点作为经过验证的用户。当然,该网站还有一些错误......

我使用了流星用户包和骨干包来浏览页面。在本地主机上,没有问题。为了测试,我将项目上传到流星服务器。现在,当我登录并浏览页面时,每次我导航到新页面时,应用程序都会因为 url 更改而在客户端“检查”用户。这很烦人...

当然,我可以浏览仅调用 Session.set('page_id', ..) 的页面,但我的目标是能够向人们发送一个 url 到服务器上的特定页面。

该代码类似于来自流星页面的 todos 示例中的代码:

Meteor.subscribe('pages', function () {
    if (!Session.get('page_id')) {
    var page = Pages.findOne({}, {sort: {owner: -1}});
    if (page)
      Router.setPage(page._id);
  }
});

...

var PagesRouter = Backbone.Router.extend({
  routes: {
    ":page_id": "main"
  },
  main: function (page_id) {
    Session.set("page_id", page_id);
  },
  setPage: function (page_id) {
    this.navigate(page_id, true);
  }
});

Router = new PagesRouter;

Meteor.startup(function () {
  Backbone.history.start({pushState: true});
});

为什么我在这里问:我搜索了网络,找不到任何有同样问题的人。所以要么没有人尝试过这个,要么有一个简单的解决方案?

编辑:我如何调用页面

<template name="pages"> 
    {{#each pages}}
        <p><a href="/{{_id}}">{{title}}</a>
        {{#if isauthor}}
            <a class="delPage" href="javascript:delPage('{{_id}}')">delete</a>
        {{/if}}
        </p>
    {{/each}}
</template>
4

2 回答 2

1

好的,我解决了问题,正在改变(真)

Meteor.startup(function () {
  Backbone.history.start({pushState: true});
});

到(假)

Meteor.startup(function () {
  Backbone.history.start({pushState: false});
});

当然,像 Mubix 建议的那样添加一个锚。感谢您的提示!它在上述网站上是最新的。

我今天花了一些时间在主干文档上,但我无法想象为什么这是有效的?特别是我想知道为什么

{hashChange: false}

在这里不工作?

于 2013-02-07T14:58:38.970 回答
1

我不知道你是如何呈现页面链接的,但是这样的链接:

http://pagesharingproject.meteor.com/a1fbacba-0ddf-4077-a653-294b428bbfb8

应如下所示:

http://pagesharingproject.meteor.com/#a1fbacba-0ddf-4077-a653-294b428bbfb8

于 2013-02-07T03:30:05.163 回答