我正在使用backbone.js来构建我的客户端应用程序。 Backbone.sync适用于所有CRUD操作,但是我不清楚如何实现我需要做的服务器端请求之一。该请求涉及将包含算法参数的模型发送到服务器,并接收包含算法结果的响应(图表数据点,表格数据等)。调用model.save()并不是正确的做法,因为backbone需要一个包含更新模型的响应,而理想情况下我想用响应创建一个全新的模型。
我应该简单地回到jQuery.ajax({data:model.toJson(),...})
并使用响应创建一个新模型吗?或者还有其他一些我想念的聪明人吗?
非常感谢。
答案 0 :(得分:8)
您想要做的事情听起来不像创建,更新,读取或销毁,听起来更像是RPC调用。没有理由尝试将非CRUD操作转换为像Backbone.sync
这样的CRUD系统,只要有意义就可以自己调用$.ajax
并且RPC样式的调用听起来很好用做一些手动AJAXing。大概你可以将success
结果转换成一个或多个set
个调用,然后让Backbone的事件系统从那里获取它。
答案 1 :(得分:2)
虽然我同意@ mu的答案,但我想说,始终是一种在 CRUD 中封装非CRUD 操作的方法。
例如,在您的情况下,您可以拥有一个已加载属性的模型,这些属性将作为创建实例所需的参数发送到服务器。
服务器期待 POST 操作来创建一个实体,比如Chart
模型。服务器使用参数来构建图表,并返回图表的JSON表示,包括:初始参数和结果参数。
然后,在Backbone层中,Model将包含您需要的所有数据,不仅包括结果数据,还包含原始数据。