1

这是我的简化代码

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”属性或函数

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

4

2 回答 2

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将共享 的单个实例PlayerModel)。其背后的原因是它在创建类并将其放入类的原型时进行评估。

于 2013-05-13T09:39:23.570 回答
0

我认为您应该在调用时放入url定义PlayerModel而不是传递它new。如果您仍想将其传入,则new需要将其指定为第二个参数(如所Loamhoof指出的)

var PlayerModel = Backbone.Model.extend({
  url: "http://mysite.com/api/getpalyer.php"
});
于 2013-05-13T09:46:20.093 回答