我正在使用MVC架构(我已经浏览了MVC上的文档,但我仍然在这里丢失)并且我需要知道如何将记录填充到我的Label上。我知道我必须通过商店完成这项工作。
我已经从商店加载了值,但由于某种原因无法在我的面板上显示它。这是我的代码;
大多数示例/书籍演示了如何在网格中显示,但不是标签(我知道它必须是相同的逻辑,但我迷失了)。它显示了如何写入DB / JSON文件而不显示值。
我需要在Label文本中显示COUNTRYNAME。这是我正在做的一个示例代码,可以帮助我吗?
Ext.define ('ProjectDisplayExample.model.Country',{
extend: 'Ext.data.Model',
//
fields:['countryid','countryname']
//
});
STORE
Ext.define('ProjectDisplayExample.store.Country',{
extend:'Ext.data.Store',
model:'ProjectDisplayExample.model.Country',
remoteGroup:true,
proxy: {
actionMethods : {
read : 'POST',
},
type: 'ajax',
url : '/server/country.php'
}
});
查看
Ext.define('ProjectDisplayExample.view.CountryWindow', {
extend: 'Ext.window.Window',
alias: 'widget.countrywindow',
...........
initComponent: function() {
var st = Ext.getStore('Country');
st.load();
this.items = [
{
items: [
{
xtype: 'panel',
region: 'north',
items: [{
xtype: 'label',
// NEED TO DISPLAY COUNTRT NAME FROM THE STORE HERE
}]
}]
}
更新
var store = ... // Your store
store.on('load', function() {
// here store is loaded and you can do anything you want with it
console.log('store is loaded. number of records = ', store.getCount());
}, this, { single: true });
store.load; // I ADDED THIS LINE.................... <---------
更新2
this.items = [
{
items: [
{
xtype: 'panel',
region: 'north',
items: [{
xtype: 'label',
name : f
}]
}]
答案 0 :(得分:3)
我不会发布代码示例来准确解决您的问题,但我会给您几点意见:
商店包含数组或记录。所以你不能只从商店说give me country name
。您首先需要获取记录,例如:var r = store.getAt(0)
,然后才能获得countyname字段var f = r.get('countryname')
。
Load()
方法是异步的,因此您可以在代码中的某个位置执行它,并假设对于下一行,您的商店已准备就绪。您需要订阅load
事件,例如:
var store = ... // Your store store.on('load', function() { // here store is loaded and you can do anything you want with it console.log('store is loaded. number of records = ', store.getCount()); }, this, { single: true }); store.load();
xtype: label
中的标签在ExtJ中实际上很少使用。您究竟想要在该面板中显示什么?但无论如何......在您从商店中获取数据后,您可以使用update()
或setValue()
或任何其他方法来更新组件。
希望这会有所帮助......