2013-07-16 40 views
0

因此,我看到了與此問題有關的其他帖子,但無論我是否願意納入他們的建議,我似乎都無法解決問題。所以這是代碼:通過Backbone.js使用外部視圖

我在做什麼錯在這裏,什麼是最好的方式來獲得應用程序啓動?

整個應用程序:

var Person = Backbone.Model.extend({ 

defaults : { 
    name : "" 
} 

}); 

var PersonView = Backbone.View.extend({ 

el : $('body'), 

tagName: 'li', 

initialize : function() { 
    this.render(); 
}, 

render : function(){ 
    var template = _.template($("#person").html(), {}); 

    this.$el.html(template); 

    return this; 
} 

}); 

HTML瓦特/模板:

<script type="text/template" id="person"> 
     <h1><%= name %></h1> 
    </script> 

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
    <script type="text/javascript" src="js/underscore.js"></script> 
    <script type="text/javascript" src="js/backbone.js"></script> 
    <script type="text/javascript" src="app.js"></script> 
+0

你有什麼具體問題? – ebohlman

回答

1

乍一看,它看起來像你錯誤地定義DOM位置。

el : $('body'), 

tagName: 'li', 

el應該是jQuery選擇字符串,而不是對象

el : 'body' 

但隨後,this.$el$('body')有效,所以this.$el.html(template)會盡量把數據放到<body>標籤。

它看起來像,從您希望擁有多個PersonViews的tagName: 'li',所以我建議不要定義el財產的話,那麼追加this.$el一旦視圖已經被渲染到任何父元素,你需要進去。

0

進一步審查時,「整個應用程序」表明你沒有初始化任何東西。

您在那裏的Javascript定義了Person類和PersonView類。據推測,你會想實例化Person類的一個或多個對象,然後也爲每個人PersonView,這是通過使用new,如mu is too short提到的實現的。

實際上,您擁有的代碼是安裝程序,現在您需要啓動它。

var joe = new Person; 
var joeView = new PersonView({ person: joe }); 

那段假定,你會在PersonView在期待{ person: joe },這你沒有,但扔應該指向你在一個更好的方向錯誤。