2014-07-23 13 views
0

我正在通過todomvc主幹dependency example讀取,並注意到'new'操作符用於創建新集合,但視圖,模型和路由器返回對象本身。爲什麼新操作符用於todomvc依賴性示例中的集合

爲什麼收藏品需要新操作員?

收集

/*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; 
}); 
+0

請發表具體的代碼。 –

+0

可能都工作。 – Bergi

+0

我得到'TypeError:obj [實現]不是函數'錯誤,如果我只是使用'返回TodosCollection;' – Matt

回答

0

當一個模塊返回new Object()它被認爲是一個單身,因爲緩存不會允許同一模塊即可再次加載。

我假設你正在看的集合對象是Singleton。它已經實例化,所以你不需要這樣做。

This是我假設您質疑的文件。

此外,它不一定需要它只是一個架構決定。 Here is a great article about exporting in modules

+0

謝謝。這就說得通了。我仍然不完全明白爲什麼它不起作用,如果在這種情況下沒有使用單例模式,但也許我需要長時間盯着它。 – Matt