在Backbone中覆盖自定义非RESTful服务器的持久性方法

时间:2011-12-11 04:17:02

标签: jquery sharepoint backbone.js

我在基于SharePoint的自定义应用程序之上构建基于Backbone.js的界面,该应用程序使用SOAP进行通信(我使用优秀的SPServices jQuery库与Web服务进行通信)。据我所知,Backbone模型使用REST架构来获取和更新数据。

因此,如果我必须自定义CRUD操作,我必须覆盖哪些模型方法?是否有我可以使用的骨架示例?

3 个答案:

答案 0 :(得分:2)

您需要覆盖Backbone.sync函数。

以下是文档:http://documentcloud.github.com/backbone/#Sync

作为参考,这是默认Backbone.sync函数的源代码:https://github.com/documentcloud/backbone/blob/master/backbone.js#L1012

答案 1 :(得分:2)

SharePoint 2010实现了REST接口,您可以使用此接口在SharePoint中执行CRUD操作。

In this page您可以找到更多信息。

骨干集合只需要指定正确的URL和简单的解析函数。

window.Products = Backbone.Collection.extend ({
    model: Product,
    url: "/_vti_bin/listdata.svc/Products",
    parse: function(response) {
        return response.d.results;
    }
});

答案 2 :(得分:1)

如果您使用的是SharePoint 2010,则可以考虑使用SharePoint REST界面(ListData.svc),这很容易连接到Backbone。您需要提供自定义的parse()和sync()方法。

我为SharePoint编写了一个Backbone插件,您可能会发现它非常有用。它基于此REST接口为SharePoint项目提供完整的CRUD。它展示了如何扩展Backbone的模型和集合,并使用自定义sync()和parse()来轻松使用SharePoint项目和列表。

使用此插件,您可以像这样编写对SharePoint的访问权限:

var Contact = Backbone.SP.Item.extend({
    site: '/teamsite',
    list: 'Contacts'
});

var contact = new Contact({LastName: "Delaney"});

var contact.save();

您可以在GitHub上找到该插件:https://github.com/lstak/Backbone.SharePoint