从localStorage转换Backbone的Todo List示例

时间:2011-08-20 07:20:13

标签: node.js backbone.js mongoose express

我一直关注Todo list examplesourceBackbone.js)。代码使用本地存储,我想尝试转换它,以便它通过RESTful Web服务进行操作。

假设网络服务已存在于路由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 个答案:

答案 0 :(得分:2)

如果您需要不同于集合创建的网址而不是在模型中声明网址,则应在集合中设置网址。

您需要删除

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

来自index.html,因为它在backbone.js之后链接,并且有效地覆盖了Backbone的同步方法以存储在localStorage中。

答案 1 :(得分:0)

我会在Todos示例中保留模型。在集合类中添加以下属性:

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

对集合调用fetch()应检索Todo对象列表。

如果您使用Rails,则需要设置ActiveRecord::Base.include_root_in_json = false否则Backbone.js将无法从返回的json中提取Todo对象。