2

我正在使用backbone.js 来构建我的客户端应用程序。Backbone.sync 适用于所有 CRUD 操作,但是我不清楚如何实现我需要发出的服务器端请求之一。此请求涉及向服务器发送包含算法参数的模型,并接收包含算法结果(图表数据点、表格数据等)的响应。调用 model.save() 感觉不是正确的做法,因为骨干网期待包含更新模型的响应,而理想情况下,我希望使用响应创建一个全新的模型。

我是否应该简单地回退jQuery.ajax({data:model.toJson(),...})并使用响应创建一个新模型?还是我还缺少其他聪明的东西?

非常感谢。

4

2 回答 2

8

你想做的事情听起来不像是 Create、Update、Read 或 Destroy,它听起来更像是一个 RPC 调用。没有理由尝试将非 CRUD 操作硬塞到 CRUD 系统中,只要有意义Backbone.sync,您就可以自由地调用自己,并且 RPC 风格的调用听起来像是做一些手动 AJAXing 的好方法。$.ajax大概您会将success结果转换为一个或多个set调用,然后让 Backbone 的事件系统从那里获取它。

于 2012-06-02T04:32:04.567 回答
2

尽管我同意@mu 的回答,但我想说这始终是一种将非 CRUD操作封装在CRUD中的方法。

例如,在您的情况下,您可以拥有一个带有加载属性的模型,这些属性作为创建实例所需的参数发送到服务器。

服务器期待一个POST操作来创建一个实体,比如说Chart模型。服务器获取参数来构建图表,并返回图表的 JSON 表示形式,包括:初始参数和结果参数。

然后,在 Backbone 层中,模型将包含您需要的所有数据,不仅是结果数据,还包括原始数据。

于 2012-06-02T13:15:47.743 回答