我正在使用Ext.ux.data.proxy.WebSocket
扩展,并具有以下商店定义:
Ext.define('ExtMVC.store.StatsWebSocket', {
extend: 'Ext.data.Store',
alias: 'store.statswebsocket',
requires: [
'Ext.ux.data.proxy.WebSocket'
],
model: 'ExtMVC.model.Stock',
proxy: {
type: 'websocket',
storeId: 'StatsWebSocket',
url: 'ws://localhost:8087/ws',
reader: {
type: 'json',
root: 'cis4-file-stats'
}
}
});
使用 Chrome 调试器,我可以看到数据实际上已被检索到,但不知何故它并没有出现在我的网格中。网格中使用store的点如下图所示:
initComponent: function(){
var store = Ext.create('ExtMVC.store.StatsWebSocket');
Ext.apply(this, {
height: this.height,
store: store,
....
我已按照 [URL]https://market.sencha.com/extensions/ext-ux-data-proxy-websocket[/URL] 上的说明进行操作,但似乎没有任何效果。知道我可能做错了什么吗?提前致谢。
每次浏览器从套接字服务器接收数据时,错误:
Uncaught Ext.ux.WebSocket.receiveEventMessage(): (No description provided)
被抛出。
Ext.ux.WebSocket扩展的这个函数出现错误:
fireEventArgs: function(eventName, args) {
eventName = eventName.toLowerCase(); // ERROR occurs here
var me = this,
events = me.events,
event = events && events[eventName],
ret = true;
if (event && me.hasListeners[eventName]) {
ret = me.continueFireEvent(eventName, args || emptyArray, event.bubble);
}
return ret;
}
环境:ExtJS 4.1,Netty 3.5.0.Final。
仅供参考:我也在这里发布了这个问题。
更新:扩展的开发者 Wilky在Sencha 论坛 上回答了我的问题。简而言之,套接字服务器返回的 JSON 必须符合特定的结构。它必须有“事件”和“数据”节点:
{"event": "read", "data": [{....}, {....}]}
“事件”可以是任何 CRUD 方法;读取、更新、销毁或创建。“数据”对应于您的应用程序特定数据。我需要做的就是改变我的 JSON 数据的结构。