Преобразование примера списка Todo Backbone из localStorage - PullRequest
4 голосов
/ 20 августа 2011

Я просматривал пример списка Todo ( source ) для Backbone.js .Код использует локальное хранилище, и я хотел попробовать преобразовать его, чтобы он работал через веб-сервис RESTful.

Предположим, что веб-сервис уже существует на маршруте todos/.Я решил, что мне нужно добавить url кусок в Backbone.Model.extend и удалить строку localStorage: new Store("todos"), когда мы выполним Backbone.collection.extend.

  window.Todo = Backbone.Model.extend({

    url : function() {
      return  'todos/'+this.id;
    }

    // Default attributes for a todo item.
    defaults: function() {
      return {
        done:  false,
        order: Todos.nextOrder()
      };
    },

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

  });

Как правильно это сделать?

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

URL-адрес должен быть установлен в Коллекции, если вам нужны другие URL-адреса, отличные от тех, которые созданы коллекцией, чем объявление URL-адреса в модели.

Вам необходимо удалить

  <script src="../backbone-localstorage.js"></script> 

из индекса.html, поскольку он связан с backbone.js и эффективно переопределяет метод синхронизации Backbone для хранения в localStorage.

0 голосов
/ 23 августа 2011

Я бы оставил модель такой же, как в примере с Todos.В классе коллекции добавьте это свойство:

window.TodoList = Backbone.Collection.extend({
    ...     
    url: '/todos',
    ...
}

Вызов fetch() для коллекции должен получить список объектов Todo.

Если вы используете Rails, вам нужно установить ActiveRecord::Base.include_root_in_json = false, иначе Backbone.js не сможет вытащить объекты Todo из возвращенного json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...