【问题标题】:Load combo values from ajax call using extjs使用 extjs 从 ajax 调用加载组合值
【发布时间】:2015-06-26 23:03:48
【问题描述】:

我有一个用 ExtJS 编码的 UI。我希望在页面加载时完成三件事:

  1. 对检索 HashMap 的服务器进行 ajax 调用。
  2. 在主页面板内创建一个组合框

    var combo = Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Choose State',
    id: 'mycombo',
    queryMode: 'local',
    displayField: 'name',
    valueField: 'id',
    store: [],
    renderTo: Ext.getBody()
    });
    
  3. 使用检索到的 HashMap 填充此组合框。

    combo.getStore().add([[i, m.get(i)]]);
    

现在,当页面加载时,我需要执行所有三个 javascript 代码。请建议我该怎么做?

还有一个问题。组合框创建代码位于我在 ExtJS 中编码的主页“面板”的“项目”内。那么当页面加载时我如何以某种方式调用这个创建代码呢?简而言之,我需要将组合框的详细信息存储在 javascript 'var'中

'var combo = Ext.create(....)`

我以后可以使用它来填充组合框。那么如何在页面加载时“调用”“items”中的代码并将其分配给“var”,因为此后我使用 HashMap 使用此“var”填充此组合框。

【问题讨论】:

  • Ext.onReady(function () { // place your code here , in ajax success put the remaining two lies for constructing combo and changing it });
  • 感谢您的回答,但第二个问题仍然存在。这个组合框与我在 ExtJS 中编码的页面上的其他 UI 元素一起存在。所以组合框创建代码只能在 extjs 代码的“项目”部分内。在那里我不能运行javascript代码,除非它在一个函数中。如何解决这个问题请指教

标签: javascript ajax extjs combobox


【解决方案1】:

这是一个非常正常的功能,可以完全由 ExtJS 处理。无需手动将记录一一添加到组合存储中。您只需要定义一个带有 ajax 代理的存储并将其附加到组合框组件即可。该商店将被配置为提取和解析自己的数据。

Here 是一个简单的例子,说明如何做到这一点。

【讨论】:

  • 如果 ajax 调用的 REST 服务返回一个 HashMap 会起作用吗?
  • @aayush_v20 我猜 HashMap 您指的是 JSON 对象,这就是我给您的示例中使用的对象。如果不是 JSON,您能否提供一个 REST 输出示例?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多