2012-06-05 94 views
1

你好我正在爲我的應用程序使用Backbone.js + require.js我有一個問題在Firefox中呈現模板。它工作正常,在Chrome和IEBackbone.js Firefox問題

這裏呈現

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'text!templates/home/main.html' 
], function ($, _, Backbone, mainHomeTemplate) { 

    var mainHomeView = Backbone.View.extend({ 
     el: $("#page"), 
     render: function() { 
//   console.log("loading template"); 
      this.el.html(mainHomeTemplate); 
     } 
    }); 
    return new mainHomeView; 
}); 

可以有一個人讓我提前知道

+1

是包裝在$(document).ready({...})中的代碼嗎? – spacevillain

+0

你想讓我包裹在哪裏?在視圖中? – Kishore

+0

換句話說,你確定$(「#page」)在代碼執行時是可訪問的嗎?我建議你將整個代碼包裝在.ready()中,然後檢查。 – spacevillain

回答

0

this.el什麼問題

感謝代碼是給一個參考視圖的原始DOM元素。我猜Chrome瀏覽器的原始DOM元素必須有一個HTML方法,但是(很明顯)Firefox沒有。

無論如何,你真正想要的是相同元素的jQuery封裝版本,你可以使用this.$el。如果出於某種原因,您使用的是Backbone的舊版本(最近增加了$ el),您可以只做$(this.el);它的工作原理是一樣的,但它稍微不方便。

如果您使用該元素的jQuery封裝版本,那麼您的.html(mainHomeTemplate)調用將工作,因爲jQuery對象總是有一個「html」方法。

+0

我試過,但看起來像我仍然有同樣的問題,我沒有看到我的螢火蟲控制檯中的任何JavaScript錯誤。有什麼我失蹤? – Kishore

+0

我想象你的el不是你想象的那樣。你可以嘗試console.logging來確認。如果我是正確的,你可能想要嘗試在你的視圖的initialize方法中設置el(通過.setElement)(或者甚至在渲染本身時,取決於你如何調用事物的時間)。 – machineghost