2013-07-01 67 views
1

我有一個簡單的Backbone視圖繼承層次結構,並希望所有視圖都有一個通用模型。只有這些視圖中模型的url屬性會有所不同。所以我在初始化模型時傳遞了這個url。將url屬性傳遞給模型不起作用

家長一般的看法是:

GenericView = Backbone.View.extend({ 
template: "friendsList-template.html", 
initialize: function(){ 
    var that = this; 
    that.model.fetch({ 
     success: function(model,response){ 
      that.handleResponse(response); 
     }, 
     error: function(){ 
      //handle error 
     } 
    }); 
} 
}); 

那孩子的看法是:

PersonView = GenericView.extend({ 
el:$("#container"), 

personData: {}, 
template: "profile-template.html", 
model = new GenericModel({ 
    url:"testRouter.php" 
});//here is where I'm defining the url 
initialize: function(){ 
    PersonView.__super__.initialize.apply(this); 
}, 
render: function(){ 
    var that = this; 
    $.get(this.templatesPath + this.template, function(resTemplate){ 
     var html = Mustache.render(resTemplate, that.personData); 
     that.$el.html(html); 
    }); 
}, 
handleResponse: function(res){ 
    this.personData = res; 
    this.render(); 
} 
}); 

而且GenericModel簡直是空的模型(至少目前)

GenericModel = Backbone.Model.extend({ 
}); 

在控制檯中,出現以下錯誤:

Uncaught Error: A "url" property or function must be specified backbone.js:1559 

我的等級是問題還是別的?有什麼想法嗎?

+0

必須編輯它,我是想出來的東西和粘貼代碼的版本錯誤 –

回答

1

fine manual

constructor/initializenew Model([attributes], [options])
[...]
{url: "..."} and/or {urlRoot: "..."} options may be passed when creating a new model that needs to have a custom one-off URL endpoint.

注意兩件事情:

  1. 的第一個參數構造函數是屬性對象。
  2. url進入第二個options對象。

所以,你應該這樣做:

var model = new GenericModel(null, { 
    url: "testRouter.php" 
}); 

,如果你想設置url當你創建模型。

演示:http://jsfiddle.net/ambiguous/gSYug/

相關問題