Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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
Backbone.js 不同文件中的模型/视图_Backbone.js - Fatal编程技术网

Backbone.js 不同文件中的模型/视图

Backbone.js 不同文件中的模型/视图,backbone.js,Backbone.js,我只是尝试在我的项目中采用backbone.js和todo示例。在我的app.js文件中,我试图实例化我的视图/模型/集合等,但我试图得到错误消息:TodoList中未定义app HTML: collections.js: app.collections.TodoList = Backbone.Collection.extend({ model: Todo, localStorage: new Store("todos"), done: function() { return th

我只是尝试在我的项目中采用backbone.js和todo示例。在我的app.js文件中,我试图实例化我的视图/模型/集合等,但我试图得到错误消息:TodoList中未定义app

HTML:

collections.js:

app.collections.TodoList = Backbone.Collection.extend({

model: Todo,

localStorage: new Store("todos"),

done: function() {
    return this.filter(function(todo) {
        return todo.get('done');
    });
},

remaining: function() {
    return this.without.apply(this, this.done());
},
nextOrder: function() {
    if (!this.length) return 1;
    return this.last().get('order') + 1;
},

comparator: function(todo) {
    return todo.get('order');
}

}))

您试图在名称空间准备就绪之前使用它。两种选择。首先,先使用'app.js',然后取出初始化代码并将其放入最后加载的'bootstrap.js'中。第二个选项,也是我通常不喜欢的选项,定义文件中所需的名称空间(如果它们还不存在的话)。比如说

var app = app || {};
app.collection = app.collection || {};
基本上,代码是一个接一个地加载的。当您说namespace.subspace时,代码期望名称空间已经被定义为某种东西——通常是我见过的大多数情况下的对象。如果没有这一基础部分,代码将只是一条直线——它将假定您正在尝试从屋顶开始建造一座城堡

app.collections.TodoList = Backbone.Collection.extend({

model: Todo,

localStorage: new Store("todos"),

done: function() {
    return this.filter(function(todo) {
        return todo.get('done');
    });
},

remaining: function() {
    return this.without.apply(this, this.done());
},
nextOrder: function() {
    if (!this.length) return 1;
    return this.last().get('order') + 1;
},

comparator: function(todo) {
    return todo.get('order');
}
var app = app || {};
app.collection = app.collection || {};