骨干模型无法获取任何数据

时间:2013-05-13 08:50:17

标签: javascript backbone.js

这是我的简化代码

var PlayerModel = Backbone.Model.extend();

var PlayerProfileView = Backbone.View.extend({
model : new PlayerModel({url: "http://mysite.com/api/getpalyer.php"}),
render: function(){
this.model.fetch();
}
});

系统不断给我这个错误信息

  

未捕获错误:必须指定“url”属性或函数

我完全不知道我的代码有什么问题。

2 个答案:

答案 0 :(得分:3)

这是Backbone#Model的构造函数:

var Model = Backbone.Model = function(attributes, options) {

如您所见,options应作为第二个参数。在这里,您将网址作为attribute传递(尝试this.get('url')进行验证)。

将其更改为:

model : new PlayerModel(null, {url: "http://mysite.com/api/getpalyer.php"});

另一件事:

此外,在类定义(new PlayerModel({url: "http://mysite.com/api/getpalyer.php"}),)中声明一个新对象将导致所有对象共享此对象的单个实例(即任何PlayerProfileView将共享一个{ {1}})。其背后的原因是它在创建类时被评估并放入类的原型中。

答案 1 :(得分:0)

我认为您应该将url放在PlayerModel的定义中,而不是在致电new时传递它。如果您仍希望在new中传递它,则需要将其指定为第二个参数(如Loamhoof指出的那样)

var PlayerModel = Backbone.Model.extend({
  url: "http://mysite.com/api/getpalyer.php"
});