2011-08-20 54 views
4

我一直在寻找Todo list examplesourceBackbone.js。代码使用本地存储,我想尝试转换它,以便通过RESTful Web服务进行操作。从localStorage转换主干的待办事项列表示例

假设webservice已存在于路由todos/。我想我需要在url中加入Backbone.Model.extend,并在执行Backbone.collection.extend时删除localStorage: new Store("todos")

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

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

你需要从index.html的,因为它是Backbone.js的链接后删除

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

,有效覆盖骨干中的localStorage存储同步方法。

+0

谢谢。我尝试了这两个改变,todos.js仍然没有从服务中获取待办事项。我是否正确设置网址?任何机会,你可以张贴工作todos.js的代码?看看http://www.jamesyu.org/2011/01/27/cloudedit-a-backbone-js-tutorial-by-example,我是否也需要扩展控制器? –

+0

什么请求被发送到后端? –

0

我会离开模型,因为它是在Todos的例子。在集合类添加该属性:

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

呼吁收集fetch()应检索的Todo对象的列表。

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

相关问题