Extjs 登录后从商店加载Sencha Touch-种族问题?
只有在用户通过身份验证后,我才打算从服务器加载数据。 为了简单起见,让我们假设用户已经通过身份验证 我将load data函数调用(从存储中加载数据)放在Main.js initialize函数中,如下所示 但是,getStore('storeId').load()函数是异步的,这让我担心,数据存储仅在主视图完成加载后才完成加载,这可能会导致视图加载时没有数据(如果我错了,请修复我,也许sencha可以处理这个问题,视图引用了storeId) 针对这些问题的最佳做法是什么 简单的解决方案:同步调用存储加载,,但这有什么区别吗?以防万一,怎么做?我尝试将同步变量集添加为true,但没有成功 app.jsExtjs 登录后从商店加载Sencha Touch-种族问题?,extjs,sencha-touch,sencha-touch-2,sencha-touch-2.1,Extjs,Sencha Touch,Sencha Touch 2,Sencha Touch 2.1,只有在用户通过身份验证后,我才打算从服务器加载数据。 为了简单起见,让我们假设用户已经通过身份验证 我将load data函数调用(从存储中加载数据)放在Main.js initialize函数中,如下所示 但是,getStore('storeId').load()函数是异步的,这让我担心,数据存储仅在主视图完成加载后才完成加载,这可能会导致视图加载时没有数据(如果我错了,请修复我,也许sencha可以处理这个问题,视图引用了storeId) 针对这些问题的最佳做法是什么 简单的解决方案:同步调
launch: function() {
// Destroy the #appLoadingIndicator element
Ext.fly('appLoadingIndicator').destroy();
Ext.Ajax.request({
url: MyApp.app.baseUrl + 'session/mobileCheckAuth',
method: "POST",
useDefaultXhrHeader: false,
withCredentials: true,
success: function(response, opts) {
if (response && response.status === 200) {
Ext.Viewport.add(Ext.create('MyApp.view.Main'));
} else {
Ext.Viewport.add(Ext.create('MyApp.view.LoginPanel'));
}
},
failure: function(response, opts) {
alert('Unexpected failure detected');
Ext.Viewport.add(Ext.create('MyApp.view.LoginPanel'));
}
});
},
Main.js
Ext.define('MyApp.view.Main', {
...
initialize: function() {
console.log('main.initialize');
this.callParent(arguments);
// Load app data
MyApp.utils.Functions.loadData();
}
有两种方法可以解决此问题:
store.load({callback: function(){
Ext.Viewport.add(Ext.create('MyApp.view.Main'}
});
我想我得到了答案,但只是为了确保:我有一个扩展了“Ext.List”的类,并且在配置中有“store:'mystore'”,这是否适用于第一个选项?网格是什么意思?视图和存储之间的自动同步记录在哪里?@user2867106。您的问题如下:1:是。2:
Ext.grid.grid
3:这是数据绑定而不是自动同步(autosync
是存储的属性,指将更改同步到后端服务器).Databinding是MVC中的一个基本概念。我无法参考它的文档,但任何实时数据更改的示例都反映了这一基本行为。