繁体   English   中英

Backbone.js模型数据检索

[英]Backbone.js Model Data Retrieval

一般问题我是否正在调用webservice来返回与我的一个Backbone模型相关的数据。 从模型本身调用webservice是否更好,或者我应该在初始化时将WS的结果传递给模型。

我倾向于在我的模型中加入WS调用,但显然可能会遇到延迟问题。

那么处理这种数据检索的最佳位置在哪里?

如果呈现HTML的页面已经知道将进入模型的数据,我绝对更愿意将数据直接呈现到模型构造函数中。 像这样的东西(假设一个Rails视图,但这只是为了说明的目的):

假设您的控制器已将一些JSON数据呈现为@modelData

var modelData = <%= @modelData %>;
var model = new TheModel(modelData);

通过这种方式,您可以立即获取数据,而无需再次回拨服务。 我已经多次使用这种方法取得了很大的成功。

编辑

为了扩展这一点,这导致对服务器的调用更少,因为后端正在渲染返回到客户端的HTML或JS中的数据。 上面代码的结果(在视图渲染之后)可能是这样的:

var modelData = {id: 5, first: "Collin", last: "Estes" }; // populated in first server call
var model = new TheModel();

但是,如果您使用另一种方法,则可以对服务器进行两次调用:

var model = new TheModel({id: 5});
model.fetch();  // results in second server call

第一次调用服务器是返回代码的。 第二种情况发生在你调用fetch时。

如果你问别的什么,那么我道歉。 您可以通过“处理这些呼叫的最佳位置在哪里”来澄清您的意思。

正确的方法是首先创建模型,然后使用model.fetch来提取数据。 这样,所有的ajax逻辑都在Backbone.sync整合。

如果您在呈现HTML时可以随时获得数据,我会将其放入缓存中,例如sessionStorage ,并使您的同步代码能够读取/写入缓存。 这样,如果您需要将Web服务调用移出HTML呈现(例如,如果您使用的是应用程序缓存),则无需进行重大重构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM