@BelkinVadim
Frontend разработчик

Как правильно работать с backbone.localStorage?

Никак не разберусь как осуществить хранение данных в Backbone через backbone.localStorage.
Создаю коллекцию, добавляю в неё.
App.Collections.Elements= Backbone.Collection.extend({
    model: App.Models.Element,
    localStorage: new Backbone.LocalStorage("SomeCollection")
  });
var elements = new App.Collections.Elements(elementsArray);

При загрузке страницы выводится список моделей в коллекции. Через форму в её VIEW добавляется модель в коллекцию следующим образом
this.model.set({
        surname: this.surname.val(),
        name: this.name.val(),
        middlename: this.middlename.val(),
        tel: this.tel.val(),
        email: this.email.val()
});
elements.add(this.model);

На странице добавляется новый элемент. Но при обновление страницы всё сбрасывается.
  • Вопрос задан
  • 3857 просмотров
Пригласить эксперта
Ответы на вопрос 2
@personaljs
потому что метод set только устанавливает параметры модели, а для сохранения модели используется метод save
Ответ написан
Комментировать
@BelkinVadim Автор вопроса
Frontend разработчик
Спасибо. Но я наверное что-то не так делаю опять. Не хотелось бы наглеть и доставать с вопросами, но второй день никак не могу понять как добавлять созданные модели в коллекцию в localStorage. С примерами использования backbone.localStorage разбираюсь, но не получается.
1) Создаю экземпляр модели
App.Models.Element= Backbone.Model.extend({
    defaults: {
       ........
    }
  });

2) Создаю и заполняю коллекцию начальными данными
App.Collections.Elements= Backbone.Collection.extend({
    model: App.Models.Element,
    localStorage: new Backbone.LocalStorage("SomeCollection")
  });
  var elements= new App.Collections.Elements(elementsArray);

3) Потом создаю VIEW
App.Views.Elements= Backbone.View.extend({
    template: tpl('elementsTpl'),

    initialize: function() {
      this.listenTo(elements, 'add', this.render);
    },

    render: function() {
      this.$el.html( this.template({ elements: elements.toJSON() }) );
      return this;
    }
  });

Шаблон
<script id="elementsTpl" type="text/template">
      <ul class="elements">
        <% _.each(elements,function(element) { %>
        <li class="element">
          <div class="element-name"><%= element.name %></div>
          <div class="element-date"><%= element.date%></div>
        </li>
        <% }); %>
      </ul>
    </script>

4) В VIEW приложения при инициализации
var elementsView = new App.Views.Elements;
      $('#elements-container').html(elementsView .render().el);


При загрузке страницы создаётся список из начальных моделей. Через консоль при добавление или удаление моделей из коллекции elements меняется список соответственно, но при перезагрузке всё сначала. Добавляю в коллекцию через add или create. Поясните пожалуйста, что делаю не так
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы