2013-05-30 45 views
2

我得到未捕獲的ReferenceError:嘗試使用Backbone.js的到我的模型視圖結合_auditNumber沒有定義錯誤和underscore.jsBackbone.js的未捕獲的ReferenceError:X沒有定義

<script id="searchTemplate" type="text/template"> 

         <div class="span4"> 
          <p>"<%= _auditNumber %>"</p> 
         </div> 
          <div class="span4"> 
          <p>"<%= _aic %>"</p>        
       </script> 

收藏

//Collection 
var AuditsCollection = Backbone.Collection.extend({ 

    initialize: function() { 

     this.on('add', this.render); 
    }, 

    render: function() { 

     _.each(this.models, function (item) { 

      var _auditView = new AuditView({ 
       model: item 
      }); 

      $("#audits").append(_auditView.render().el); 
     }); 
    }, 
}); 

型號

var Audit = Backbone.Model.extend({ 

     url: function() { 

      return myUrl; 
     }, 
     defaults: { 

      _auditNumber: "", 
      _aic: "",   
     }, 
     parse: function (data) { 

      data.forEach(function (auditItem) { 
       var auditsCollection = new AuditsCollection(); 
       auditsCollection.add(JSON.stringify(auditItem)); 
      }); 
     } 
    }); 

// Sub View 
var AuditView = Backbone.View.extend({ 

    className: 'row-fluid', 
    template: $("#searchTemplate").html(), 

    render: function() { 

     var tmpl = _.template(this.template); 

     this.$el.html(tmpl(this.model.toJSON())); 

     return this; 
    } 
}); 

我知道我缺少一些簡單的東西,任何幫助表示讚賞。

+0

什麼行引發錯誤?我猜這是你在渲染模板的時候?因此,看到渲染模板的代碼太方便了:) –

+0

感謝您指點渲染模板。請參閱編輯。 – Harish

+0

這對perfs來說是非常糟糕的,你每次想渲染的時候都要重新編譯這個模板。 – Ven

回答

2

2個問題(至少 - 在給出多少骨幹教程的情況下,你對雜草很滿意)。

  1. 您的模型URL正在返回結果列表。這就是收藏的目的。您的模型應該獲取單個記錄,parse方法必須返回模型的屬性數據。如果你堅持教程,你不需要自定義url函數,你根本不需要定製的parse函數。

    var Audit = Backbone.Model.extend({ 
        url: function() { 
         //This needs to be a url like /audits/42 for a single record 
         return myUrl; 
        }, 
        defaults: { 
         _auditNumber: "", 
         _aic: "",   
        }, 
        parse: function (data) { 
         //this needs to return an object 
         return data[0]; 
        } 
    }); 
    
  2. 您沒有向您的模板函數傳遞有效的數據對象。

    // Sub View 
    var AuditView = Backbone.View.extend({ 
        className: 'row-fluid', 
        //compile template string into function once 
        template: _.template($("#searchTemplate").html()), 
        render: function() { 
         //render template into unique HTML each time 
         this.$el.html(this.template(this.model.toJSON()));  
         return this; 
        } 
    }); 
    
+0

仍然遇到同樣的問題。 – Harish

相關問題