【问题标题】:How can i load data from a json file如何从 json 文件中加载数据
【发布时间】:2012-02-28 22:22:46
【问题描述】:

我使用 extjs 并使用 store loader 加载一个 json 文件。

我想加载一个 json 文件。它将包含“totalRecords”,我想把它放在一个 var 中。例如 var 记录。这样我就可以在我的应用程序的某些位置显示它并将其用于警报。

感谢您的帮助,我知道有这个:

total = Ext.create('Ext.data.Store', {
model: 'step1',
proxy: {
        type: 'ajax',
        url: 'testevents.json',
        reader: {
            type: 'json',
            root: 'slaevents'
        }
},
listeners: {
    load: function() {
        records = total.getRange()
        test = records[0].get('event')
        alert('1 =' +test)
    }
},
autoLoad:true
});
alert('2 =' +test)

这将显示带有“1 =other”的警报。那是正确的。和“2 =未定义”。那是错的。我如何在这家商店之外使用测试?

谢谢

【问题讨论】:

  • 我总是使用装载机。所以它将加载到网格中。我也尝试过计数,但总是返回 0。我只是不知道该怎么做
  • 我确实使用谷歌,但如果您不知道自己在寻找什么,那就很难了。我用我尝试的代码进行编辑

标签: json extjs load var


【解决方案1】:

意识到你的商店不会立即加载,所以当你在 js 中立即将它分配给一个变量时,它里面什么都没有。您需要监听商店加载然后分配它,或者在回调中分配它。例如,这很好用:

// get the countries
var countries = Ext.create('Ext.data.Store', {
    fields: ['id','name'],
    proxy: {
        type: 'ajax', 
        url: '../getCountries',
        reader: 'json'
    },
    listeners: {
        load: function() {
            records = countries.getRange()
            alert(records[0].get('name'))
        }
    }
});

这会提醒“阿根廷”。

records 成为Ext.data.Model 对象的数组,每个对象都具有Ext.data.Model 具有的所有方法。这在 API 中包含 here

【讨论】:

  • 但我在某处读到无法在这家商店外使用记录[0]?
  • 这将是记录 s [0]。我不确定你读了什么,在你的代码中试一试,它对我来说很好。请注意,我不是在执行“var records = ...”,这将使“记录”成为局部变量,而是一个全局变量,因此可以在任何地方访问你的代码。当然,您还必须记住我在开始时所说的关于商店不会立即加载的部分。因此,当您的 js 初始化时,您将无法调用 records[0].get('name') ,因为在 ajax 返回之前它是空的。但是你可以把它放在ajax返回后调用的其他函数中。
猜你喜欢
  • 2022-01-09
  • 1970-01-01
  • 2017-01-06
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多