Extjs数据视图未刷新-始终获取emptyText值

Extjs数据视图未刷新-始终获取emptyText值,extjs,Extjs,我有一个后端,它返回一个JSON,我将它加载到一个存储中,它加载良好,然后从控制器调用视图刷新,我总是得到视图的emptyText值,模板不是refeshing 编辑:它正在工作!下面的设置如果正常,问题是我如何查找视图 控制器: showNotes: function(activityId) { var me = this; Ext.Ajax.request({ url: MyApp.Config.BASE_URL + '/someURL',

我有一个后端,它返回一个JSON,我将它加载到一个存储中,它加载良好,然后从控制器调用视图刷新,我总是得到视图的emptyText值,模板不是refeshing

编辑:它正在工作!下面的设置如果正常,问题是我如何查找视图

控制器:

showNotes: function(activityId) {
    var me = this;
    Ext.Ajax.request({

        url: MyApp.Config.BASE_URL + '/someURL',
        method: 'GET',
        success: me.successGetNotes.bind(me),
        failure: me.failureGetNotes
    });
},

successGetNotes: function(result) {
        var notesStore = this.getNotesStore(),  //This gets me the store ok
            publishersStore = this.getPublishersStore(),
            data = Ext.JSON.decode(result.responseText);
        notesStore.loadRawData(data.result.notes);
        publishersStore.loadRawData(data.result.publishers);
        this.getNotesPanel().refresh();   //this calls the refresh on the DataView ok
        //TODO
    },
型号:

Ext.define('MyApp.model.Note', {
    extend: 'Ext.data.Model',
    fields: [
        'publisherId',
        'text' ,
        {
            name: 'created',
            type: 'date',
            dateFormat: 'c' 
        }
    ]
});
商店:

Ext.define('MyApp.store.Notes', {
    extend: 'Ext.data.Store',
    model: 'MyApp.model.Note',
    alias: 'store.Notes',
    storeId: 'Notes'
});
主要观点:

...
    items: [
        {
            xtype: 'notes-panel',
            //store: Ext.data.StoreManager.lookup('Notes'), NO!!!
            store: 'Notes',  //YES!
            flex: 1
        }
    ]
...
注意事项小组:

Ext.define('MyApp.view.sections.notes.NotesPanel' ,{
    extend: 'Ext.DataView',
    alias: 'widget.notes-panel',
    //deferInitialRefresh: false,

    itemSelector: 'div.something',
tpl:  new Ext.XTemplate(

   //  '<tpl for=".">',
   //  '<div class="something">',
   //      '<p>ID:{publisherId}</p>',
   //      '<p>{text}</p>',
   //      '<p>{created}</p>',
   // '</div>'
   // '</tpl>',

   '<table width="100%" border="0">',
    '<tpl for=".">',
        '<div class = "something">',
        '<tr><td width="85">ID:</td><td width="315">{publisherId}</td></tr>',
        '<tr><td>Note:</td><td>{text}</td></tr>',
        '</div>',
   '</tpl>',
   '<table>'
),

    emptyText: 'No data available'

})
;
还有一件事:我还想在notes中使用publisherId打印发布者名称和类型,因此我需要两个存储区的数据。我正在考虑通过在DataView中查找来加载另一个存储,并以这种方式获取发布者。这可行吗

来自:

一个简单的CSS选择器(例如div.some-class或span:first-child),用于确定此DataView将使用哪些节点。itemSelector用于将DOM节点映射到记录。因此,应该只有一个根级别的元素与每条记录的选择器相匹配

正如您可以在DataView的示例中看到的:

var imageTpl = new Ext.XTemplate(
    '<tpl for=".">',
        '<div style="margin-bottom: 10px;" class="thumb-wrap">',
          '<img src="{src}" />',
          '<br/><span>{caption}</span>',
        '</div>',
    '</tpl>'
);
var imageTpl=new Ext.XTemplate(
'',
'',
'',
“
{caption}”, '', '' );

该类位于
tpl
元素下,因此我认为在您的示例中,您需要在
tpl
节点下创建一个
div

当您需要注释时,我认为您的调用发布者。我实际上调用了这两个。我还需要出版商,但我还没有对出版商商店做任何事情。我没有看到任何错误的调用:(这似乎没有帮助:(我在节点中移动了div,我也像示例中那样重新编写了它,但仍然不起作用。确定您可以相应地更新您的帖子吗?并测试以下几件事:1.is
notesStore.getCount()
>0?2.删除
this.getNotesPanel().refresh()
原因如果数据发生更改,它应该自动刷新3.is
this.getNotesPanel().getCount()
>0?更新了post.notesStore.getCount为3(我的JSON响应与post中的一样)。刷新在视图类上是不受限制的。this.getNotesPanel生成:构造函数{xtype:“notes panel”,store:constructor,flex:1,initialConfig:Object,events:Object…}在store属性中,数据确实有一个空数组,不管我是否刷新视图。但是如果我进行刷新,我甚至没有得到emtyText。我想这是因为视图没有收到存储更改的通知,但我不知道为什么。啊,它正在工作!!!最后。奇怪的是,问题是我使用了查找来查找存储对于视图。现在我只使用它的ID。我将更新帖子,问题出现在主视图中:store:Ext.data.StoreManager.lookup('Notes'),不起作用,现在我使用:store:'Notes',并起作用。查找是从控制器复制的事实上,我在那里调试了它,效果很好。谢谢你的帮助,你的调试建议让我找到了问题!啊,是的,extjs中的每个存储定义都只是一个字符串,应该看到:D
var imageTpl = new Ext.XTemplate(
    '<tpl for=".">',
        '<div style="margin-bottom: 10px;" class="thumb-wrap">',
          '<img src="{src}" />',
          '<br/><span>{caption}</span>',
        '</div>',
    '</tpl>'
);