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 用于来自服务器的单行的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS Ajax POST 与代理 POST

ExtJS4 更改数据存储参数

ExtJS 存储添加调用创建和销毁

ExtJs二级联动

extjs ajax调用存储未加载

extjs 表格控件怎么动态显示数据