Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干:从集合访问模型_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干:从集合访问模型

Javascript 主干:从集合访问模型,javascript,backbone.js,Javascript,Backbone.js,在中,他在他的TodoList集合中使用nextOrder()函数来查找该集合中顺序最高的项并将其返回,如下所示: nextOrder: function() { if ( !this.length ) { return 1; } return this.last().get('order') + 1; }, 做同样的事情对我不起作用。我正在尝试制作一个游戏列表,因此我有一个Game模型和一个games集合: var Games = Backbone.

在中,他在他的
TodoList
集合中使用
nextOrder()
函数来查找该集合中顺序最高的项并将其返回,如下所示:

nextOrder: function() {
    if ( !this.length ) {
        return 1;
    }

    return this.last().get('order') + 1;
},
做同样的事情对我不起作用。我正在尝试制作一个游戏列表,因此我有一个
Game
模型和一个
games
集合:

var Games = Backbone.Collection.extend({
    localStorage: new Backbone.LocalStorage('gameslist-backbone'),

    nextOrder: function () {
        if (!this.length) {
            return 1;
        }

        return this.last().get('id') + 1;
    }
});

var Game = Backbone.Model.extend({
    defaults: {
        'id': 0,
        'name': 'Untitled'
    }
});
然后我初始化这两个

var app = {};

$(function () {
    app.game = new Game();
    app.games = new Games({ model: app.game });
});
…并在控制台中玩一玩,看看我能发现什么:

app.games.length      //=> 1
app.games.nextOrder() //=> NaN
此时,
app.games
中的一项是模型的
默认值
。为什么?此时集合应该是空白的,对吗?假设是这样,为什么
nextOrder()
返回
NaN
而不是2

如果我将集合初始化为
app.games=new games(),我可以使它的工作方式稍有不同
并将
model:app.game
设置为集合中的属性。nextOrder()可以工作,但是:

app.games.create({ 'Name': 'Monopoly' });
TypeError: 'undefined' is not a constructor (evaluating 'new this.model(attrs, options)')
此时,
nextOrder()
工作得非常好,但集合似乎没有与模型交互,因为我将该错误解释为“您希望我创建什么模型?”?我什么都不知道。”


感谢您回答了我认为非常愚蠢的问题:|

集合的
model
属性应该是一个模型类,而不是实例,它通常是集合定义的一部分。如果你设置得当,效果很好:非常有用。不知道我怎么会错过。如果你设置得当,它确实工作得很好。感谢您为我指路。
model
作为实例属性在视图中很常见,因此您会看到很多类似
var v=new SomeView({model:app.game})
的内容。