2014-01-31 55 views
0

我已經做了一個使用Handlebars.SafeString()動態加載模板的示例。一切工作正常預計刷新瀏覽器URL。當刷新瀏覽器url時,我得到一個錯誤,例如「Uncaught TypeError:對象#的屬性'undefined'不是函數」。並且此錯誤僅獲得該行,即return new Handlebars.SafeString(Template[Session.get('currentTemplate')]({dataKey: 'somevalue'}));。用這條線工作很好,一切甚至刷新也。我用這個Handlebars.SafeString()是動態加載模板。我對此沒有任何想法所以請幫助我如何?流星中的Handlebars.SafeString()問題?

在上面的Handlebars.SafeString()中有什麼用的dataKey

回答

0

看起來Session字典在撥打電話時未填充,因此Session.get('currentTemplate')未定義。一個簡單的保障應該解決這個問題,假設你在活性方面是:

if(! Session.get('currentTemplate')) return ''; 
return new Handlebars.SafeString(Template[Session.get('currentTemplate')]({dataKey: 'somevalue'})); 
+1

我會建議使用'Session.setDefault(「currentTemplate」,「myHomeTemplate」),而不是'。 http://docs.meteor.com/#session_set_default –

+0

在這種特殊情況下,使用'setDefault'會導致一個不同的模板繪製一小部分秒,因此會產生更差的閃爍。爲了設置主模板,最好使用[Iron Router](https://github.com/EventedMind/iron-router)。 –