服务器单行的ExtJS Ajax与ExtJS存储

服务器单行的ExtJS Ajax与ExtJS存储,extjs,extjs4.1,extjs-mvc,Extjs,Extjs4.1,Extjs Mvc,场景:我有一个URL,返回当前登录用户的详细信息。即 一张唱片 不需要列表 我有以下选择: 每次都要执行一个手册,在我需要回调的地方插入代码等等 创建一次并每次从存储实例获取第一条记录 问题:还有更好的选择吗?我正在使用ExtJS4.1。为什么每次都要进行ajax调用 执行一次,并将其指定为全局变量 Ext.Ajax.request({ url: 'page.php', params: { id: 1 }, success: function(

场景:我有一个URL,返回当前登录用户的详细信息。即

  • 一张唱片
  • 不需要列表
我有以下选择:

  • 每次都要执行一个手册,在我需要回调的地方插入代码等等
  • 创建一次并每次从存储实例获取第一条记录

  • 问题:还有更好的选择吗?我正在使用ExtJS4.1。

    为什么每次都要进行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)

    它比查找商店更整洁、更快


    作为奖励,您的用户对象可能比商店在没有大量配置的情况下处理的复杂得多。

    您不需要进入低级细节来做类似的事情;使用标准工具。定义模型,为其指定所需类型的代理,然后加载它。参见文档:

    是的,到目前为止我就是在这里到达的。能否将此调用(检索
    用户名
    )放在
    utils
    文件中?这在ExtJS MVC体系结构中的适用性是什么?我个人所做的是让
    加载的css实现保持活动状态,然后将其放在我的Ext.launch函数中(例如,在返回值之前我不会启动我的viewport create函数)。不过,我像瘟疫一样避免使用JS MVC,所以我的建议在这里可能不正确。是的,但您的意思是,每次需要访问当前页面中的用户对象时,您都会调用ajax调用,如果这是错误的,那么我的回答没有实际用途。您的回答有一个用途:它确认了在这一阶段没有多少事情要做+1E我仍然对如何实例化一个存储(一次)和如何进行ajax调用(每次)感到困惑。如果你需要一个活动的(更新的)用户对象,那么一次做一个存储是没有意义的,如果你需要根据请求事件获取用户的快照,那么每次调用ajax也是没有意义的。也许我没有直接回答你的问题,但我不推荐任何一种方法——我有一个类似的系统,我需要知道用户的类型,但我需要知道一些控制器何时动态加载(在应用程序启动之前)。我认为最好的方法是在index.php中包含一个php文件,该文件输出一个javascript,其中包含一个包含用户信息的全局变量(看看direct,它也做类似的事情)。这是正确的答案。在启动时加载用户一次,如果需要,可按需加载needed@AlexanderTokarev不是每个调用都是HTTP请求吗?(Ajax或REST,取决于代理的设置方式)@Josvic Zammit不一定。您可以使用Ext.directremoting代替普通的Ajax或REST,它支持请求批处理。