【问题标题】:How to use asynchronously fetched data in an XTemplate in ExtJS 4-5如何在 ExtJS 4-5 中的 XTemplate 中使用异步获取的数据
【发布时间】:2015-07-09 05:39:06
【问题描述】:

我有一个配置了 tpl 和 store 的数据视图。这很好。但是每个记录/模板的一些变量需要通过为每个记录/模板调用不同的外部 url 在连续的步骤中获取。

Ext.define('MyView', {
    extend: 'Ext.view.View',
    store: 'myStore',
    tpl: [ 
        '<tpl for=".">',
        '    <div class="social">',
        '        <div>{id}</div>',
        '        <div>{firstname}</div>',
        '    </div>',
        '</tpl>'
    ],
    itemSelector: 'div.social'
});

如何通过调用一个 json 对象来异步设置一些变量值,该 json 对象在使用模板在视图中呈现这些值后保存存储中每条记录的这些值?

根据this question on SO 的回答,这是不可能的。 根据this post 的说法是:“tpl 选项最强大的功能是可以稍后更改数据以更新页面上显示的内容。”

【问题讨论】:

  • 加载数据和在模板中使用它是两个不同的事情。您可以以任何方式加载数据,一旦可用,请致电tpl.apply(data)。那么这有什么问题呢?
  • 我有一个配置了 tpl 和 store 的数据视图。这很好。但是每个记录/模板的一些变量需要通过为每个记录/模板调用不同的外部 url 在连续的步骤中获取。我现在正在尝试一些东西。也许它确实像你建议的那样微不足道。

标签: javascript templates extjs asynchronous xtemplate


【解决方案1】:

通常您希望后端一次返回您需要的所有数据(以减少请求的数量和时间)。如果您的后端无法做到这一点和/或您无法控制它,您可能需要查看 Ext JS 的关联。
理论上,一旦 XTemplate 调用尚未加载的关联,它将发出加载请求(通过为关联模型配置的代理),然后应该在记录上触发“更新”事件,然后应该在商店上触发“更新”事件,然后触发 DataView 刷新。

【讨论】:

  • 每条记录的部分数据需要来自外部资源。但我认为你稍后添加数据是对的,那会起作用......
猜你喜欢
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 2016-06-15
相关资源
最近更新 更多