【问题标题】:Backbone.js without REST using ASP .net webservice没有 REST 的 Backbone.js 使用 ASP .net webservice
【发布时间】:2011-10-30 21:52:55
【问题描述】:

(对不起英文)

我有一个 ASP .net web 服务,它从 oracle 数据库中获取数据,返回 JSON 数据。

TestWebService.asmx/getUserData

我使用 jQuery 的简单 ajax 请求对此进行了测试

$.ajax({
     type:"POST",
     data:"{}",
     dataType:"json",
     contentType:"application/json; charset=utf-8",
     url:"TestWebService.asmx/getUserData",
     success:function(data){
         console.log(data.d);
     }
});

这项工作。

但现在我想尝试使用 Backbone.js

应用程序有:用户数据、文章和购买订单,其中购买订单是文章的集合,所以我认为在这个模型中用于 Backbone

User = Backbone.Model.extend({})
Article = Backbone.Model.extend({})
ArticleCollection = Backbone.Collection.extend({})
BuyOrder = Backbone.Model.extend({})
BuyOrderCollection = Backbone.Collection.extend({})

视图只是 2。一个表单,我显示用户数据和输入以添加文章并创建购买订单和可视化视图以显示购买订单,用户可以在其中查看检查一个购买订单的内容单击在代码中。

用户数据和部分文章数据是从服务中获取的:(用户数据如名称和文章数据如代码、描述、价格等)。

¿如何使用这些数据填充 Backbone 模型?

提前致谢。

【问题讨论】:

    标签: javascript asp.net backbone.js


    【解决方案1】:

    所以,基本上,你想覆盖Backbone.sync。它也是当前正在通过$.ajax 函数执行您的 RESTful 内容(GET/POST/PUT/DELETE)的事情。看看默认是如何实现的:http://documentcloud.github.com/backbone/docs/backbone.html#section-134

    如您所知,这真的很简单......大约 30 行左右的代码可以将 $.ajax 中的 create/update/delete/read 映射到 post/put/delete/get。

    现在您已经了解了他们是如何做到的,您只需使用相同的模式实现您自己的:

    Backbone.sync = function(method, model, options) {
        // your implementation
    };
    

    一旦你这样做了,你就是金子。您的模型将执行您希望它们执行的所有 CRUD,通过您对 Backbone.sync 的实现进行抽象。

    【讨论】:

    • 一个 asmx 端点看起来与 Backbone 集合期望的 url 没有什么不同。例如,OP 可以简单地 col.fetch({ url:'TestWebService.asmx/getUserData' })
    • 所以只需覆盖 Backbone.sync 就可以在启动时填充主干模型(默认数据)并用于例如自动完成(来自 jQuery-UI)等等?...
    • 是的,但就像@Crescent Fresh 建议的那样,您是否尝试使用您的端点作为 URL?我不会用这样的 URL 调用 fetch,因为它没有封装任何东西……但我会将 url: 'TestWebService.asmx/getUserData' 放在集合的定义中。假设您需要比默认的 Backbone.sync 做更多的事情,那么您应该覆盖它。如果默认值适合您,只需指定集合的​​ url 属性。
    • 如果您的后端需要 POST 才能获取用户数据,默认同步将不起作用,因为它(正确)使用 GET 进行获取操作documentcloud.github.com/backbone/docs/…
    • @dira 对。我记得现在看到了。如果“read”需要映射到“POST”,那么您需要覆盖默认的Backbone.sync
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 2019-07-20
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多