Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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

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 在todomvc依赖关系示例中,为什么新运算符用于集合_Javascript_Backbone.js_Todomvc - Fatal编程技术网

Javascript 在todomvc依赖关系示例中,为什么新运算符用于集合

Javascript 在todomvc依赖关系示例中,为什么新运算符用于集合,javascript,backbone.js,todomvc,Javascript,Backbone.js,Todomvc,我正在阅读todomvc主干,注意到“new”操作符用于创建新集合,但是视图、模型和路由器返回对象本身 为什么收集需要新的操作员 收藏 /*global define */ define([ 'underscore', 'backbone', 'backboneLocalstorage', 'models/todo' ], function (_, Backbone, Store, Todo) { 'use strict'; var TodosCollectio

我正在阅读todomvc主干,注意到“new”操作符用于创建新集合,但是视图、模型和路由器返回对象本身

为什么收集需要新的操作员

收藏

/*global define */
define([
    'underscore',
    'backbone',
    'backboneLocalstorage',
    'models/todo'
], function (_, Backbone, Store, Todo) {
'use strict';

var TodosCollection = Backbone.Collection.extend({
    // Reference to this collection's model.
    model: Todo,

    // Save all of the todo items under the `"todos"` namespace.
    localStorage: new Store('todos-backbone'),

    // Filter down the list of all todo items that are finished.
    completed: function () {
        return this.where({completed: true});
    },

    // Filter down the list to only todo items that are still not finished.
    remaining: function () {
        return this.where({completed: false});
    },

    // We keep the Todos in sequential order, despite being saved by unordered
    // GUID in the database. This generates the next order number for new items.
    nextOrder: function () {
        return this.length ? this.last().get('order') + 1 : 1;
    },

    // Todos are sorted by their original insertion order.
    comparator: 'order'
});

return new TodosCollection();
});
型号

/*global define*/
define([
    'underscore',
    'backbone'
], function (_, Backbone) {

'use strict';

var Todo = Backbone.Model.extend({
// Default attributes for the todo
// and ensure that each todo created has `title` and `completed` keys.
    defaults: {
          title: '',
          completed: false
     },

// Toggle the `completed` state of this todo item.
     toggle: function () {
         this.save({
         completed: !this.get('completed')
         });
     }
   });

return Todo;
});

当一个模块返回一个
new Object()
时,它被认为是一个单例,因为缓存将不允许再次加载同一个模块

因此,我假设您正在查看的集合对象是单例对象。它已经被实例化,所以您不需要这样做

是我想你要问的文件


此外,这并不一定是必需的,它只是一个架构决策

请发布具体代码。如果我只使用“return TodosCollection;”,我会得到“TypeError:obj[implementation]不是函数”错误谢谢这是有道理的。我仍然不完全理解,如果在这种情况下不使用单例模式,为什么它不起作用,但也许我需要更久地关注它。