ExtJS Ajax vs Extjs Store 用于来自服务器的单行
Posted
技术标签:
【中文标题】ExtJS Ajax vs Extjs Store 用于来自服务器的单行【英文标题】:ExtJS Ajax vs Extjs Store for single row from server 【发布时间】:2012-08-03 15:21:07 【问题描述】:场景:我有一个返回当前登录用户详细信息的 URL。即
一个记录 不需要列表我的选择:
-
每次手动执行ExtJS Ajax call,必须在需要回调等的任何地方插入代码。
创建一个ExtJS Store一次,每次都从存储实例中获取第一条记录。
问题:还有更好的选择吗?我正在使用 ExtJS 4.1。
【问题讨论】:
也许我没有直接回答你的问题,但我不会推荐任何一种方式 - 我有一个类似的系统,我需要知道用户的类型,但我需要在某些时候知道它控制器是动态加载的(在应用程序启动之前)。我认为最好的方法是在你的 index.php 中包含一个 php 文件,该文件输出一个带有包含用户信息的全局变量的 javascript(看看直接 - 它做了类似的事情)。 【参考方案1】:您无需深入了解底层细节即可执行此类操作;使用标准工具。定义一个模型,为它分配一个您需要的类型的代理,然后加载它。查看文档:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Model
【讨论】:
这是正确答案。在启动时加载用户一次,如果需要,按需加载 @AlexanderTokarev 不是每个load
都调用一个HTTP请求吗? (Ajax 或 REST,取决于代理的设置方式)
@Josvic Zammit 不一定。您可以使用 Ext.Direct 远程处理而不是普通的 Ajax 或 REST,它支持请求批处理。【参考方案2】:
你为什么每次都做一个 ajax 调用?
执行一次,然后将其分配为全局变量?
Ext.Ajax.request(
url: 'page.php',
params:
id: 1
,
success: function(response)
var text = response.responseText;
window.user = Ext.JSON.decode(text);
my.custom.launchFunction();//does your viewport etc for you
);
完成此操作后,您现在可以在任何地方进行
console.log(user.Name);
它比查找商店更简洁、更快捷。
作为奖励,您的用户对象可能比商店在没有大量配置的情况下处理的复杂得多。
【讨论】:
是的,这就是我到目前为止到达的地方。这个调用(检索username
)可以放在utils
文件中吗?这在 ExtJS MVC 架构中适合什么?
我个人所做的是让loading
的css 实现处于活动状态,然后将其放入我的Ext.launch 函数中(例如,在它返回一个值之前我不会触发我的视口创建函数)我避免像瘟疫一样的 JS mvc,所以我的建议在这里可能不正确。
是的,但你的意思是每次你需要访问当前页面中的用户对象时,你都在调用 ajax 调用,如果这是错误的,我的回答没有真正的用处。
你的回答有一个用处:它确认在这个阶段没有什么可做的。 +1ed
我仍然对你如何实例化一个商店 - 一次 - 并执行一个 ajax 调用 - 每次 - 感到困惑。如果您需要一个活动的(更新的)用户对象,或者如果您需要根据请求事件的用户快照,则每次都调用 ajax 是没有真正意义的。以上是关于ExtJS Ajax vs Extjs Store 用于来自服务器的单行的主要内容,如果未能解决你的问题,请参考以下文章