В Backbone.js как я могу получить значения по умолчанию для суперкласса Model, чтобы они действовали как значения по умолчанию для подклассов? - PullRequest
9 голосов
/ 28 июня 2011

У меня есть класс, который определяет некоторые значения по умолчанию, и подкласс, который определяет некоторые значения по умолчанию. Но когда я создаю экземпляр подкласса, он смотрит только на локальные значения по умолчанию и не объединяет свои значения по умолчанию с родительскими. Есть ли простой способ сделать это без явного объединения локальных значений по умолчанию с родительскими значениями по умолчанию в функции initialize каждого подкласса?

var Inventory = Backbone.Model.extend({
    defaults: {
        cat: 3,
        dog: 5
    }
});

var ExtendedInventory = Inventory.extend({
    defaults: {
        rabbit: 25
    }
});

var ei = new ExtendedInventory({});
console.log(ei.attributes);

Это выводит:

{rabbit: 25}

Не то, что я хочу:

{cat: 3, dog: 5, rabbit: 25}

1 Ответ

7 голосов
/ 28 июня 2011

Вы не можете так делать.Вы должны будете сделать это после подкласса

_.extend(ExtendedInventory.prototype.defaults, {rabbit: 25});

Поставьте это после определения вашей модели.

...