2014-02-19 4 views
0

Мне было интересно, есть ли способ указать атрибуты модели, которые должны быть инициализированы после создания экземпляра.Модель Backbone.js с указанием атрибутов

Book = Backbone.Model.extent({ 
title: "title", 
author: "author", 
year: "year" 

}); 

и всякий раз, когда я создаю экземпляр модели, я хочу, чтобы ограничить эти несколько атрибутов должны быть инициализированы, или по крайней мере ограничить не достаточно, чтобы быть в состоянии установить новый атрибут:

var book = new Book({ 
    title: "something", 
    pages: "350" 
}); 
+0

Чтобы уточнить, вы пытаетесь защитить эти атрибуты от изменений? –

+0

нет, я бы хотел создать модель реляционной базы данных. Если мы создадим базу данных с тремя столбцами и попытаемся вставить данные в несуществующий столбец, мы получим ошибку. Я пытаюсь моделировать подобное поведение, поэтому в этом примере вы могли бы только присвоить значения этим 3 атрибутам. если это возможно в позвоночнике. – Mefhisto1

+0

Вы пробовали мое решение? –

ответ

2

Try это:

Book = Backbone.Model.extent({ 
    defaults: { 
    title: "title", 
    author: "author", 
    year: "year" 
    } 
}); 

Если вы хотите, чтобы ограничить тем, приписывать вы можете сделать это с помощью validate м енит:

Book = Backbone.Model.extent({ 
    defaults: { 
    title: "title", 
    author: "author", 
    year: "year" 
    }, 

    validate: function(attrs, options) { 
     var isValid = true; 
     _.each(_.keys(attrs), function(key) { 
      if (!this.defaults[key]) { 
       isValid = false; 
      } 
     }, this); 
     return isValid; 
    } 
}); 
0

попробовать


Book = Backbone.Model.extend({ 
defaults: { 
    title: "title", 
    author: "author", 
    year: "year" 
    } 
}); 
Смежные вопросы