2013-02-06 72 views
0

我創建了一個項目,方便內容共享。您可以在此處查看我的項目: SharingProject流星用戶和骨幹非常慢

您可以使用[email protected]和123456作爲密碼將該站點作爲經過驗證的用戶進行測試。當然,該網站還有一些錯誤...

我用流星用戶包和骨幹包瀏覽頁面。 在本地主機上,沒有問題。爲了測試,我將項目上傳到流星服務器。現在,當我登錄並瀏覽頁面時,每當我導航到新頁面時,由於url更改,應用程序會「檢查」客戶端上的用戶。這是令人討厭的...

當然,我可以瀏覽頁面只調用Session.set('page_id',..)但我的目標是能夠發送一個url到服務器上的特定頁面。

的代碼是一個類似於在待辦事項例如,從流星頁:

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> 

回答

1

好的我解決了這個問題,改變(真)

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

到(假)

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

當然,添加錨狀Mubix建議。感謝提示! 它在上述網站上是最新的。

我今天在骨幹文檔上花了一些時間,但我無法想象爲什麼這是行得通的?特別是我想知道爲什麼

{hashChange: false} 

在這裏不起作用?

1
+0

感謝您的回答。 「應讀」是什麼意思?路由器?我將編輯我的問題,並告訴你我是如何稱呼這些頁面的。如果我打電話給href =「/#{{_ id}}」沒有任何反應......到目前爲止,我讀了一些與骨幹路由器一起工作的例子。問題是:不應該呈現整個頁面,只有內容。所以我決定通過這一行阻止瀏覽器的導航:this.navigate(page_id,true);但它仍然是一樣的?那麼是否有可能通過單擊鏈接來阻止頁面的「重新加載」,但仍然根據url更改會話「page_id」? – dome12b

+0

我覺得'href =「/#{{_ id}}」'應該可以。爲了測試這個理論,我打開了一個頁面,並複製了另一個頁面的鏈接並將其粘貼到地址欄中,然後我手動將#並按下輸入。新頁面未刷新加載。 –

+0

對不起,我通過修改開發工具中的鏈接再次嘗試,它不起作用:( –