2011-08-20 55 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對象。

相關問題