我尝试将 Ext.Direct 与 ExtJS 4 MVC 结构一起使用,但我无法添加提供程序。
Uncaught TypeError: Cannot call method 'addProvider' of undefined
调用时出现错误addProvider
:
Ext.Direct.addProvider(Ext.app.REMOTING_API);
我尝试launch
了应用程序和init
控制器。
Ext.define('Dir.Application', {
require: [
'Ext.direct.*',
'Ext.data.*',
'Ext.grid.*'
],
launch: function(){
Ext.Direct.addProvider(Ext.app.REMOTING_API);
}
...
});
和
Ext.define('Dir.controller.Main', {
init: function(){
Ext.Direct.addProvider(Ext.app.REMOTING_API);
}
...
});
两者都给出相同的错误。
放入代码的正确位置在哪里addProvider
?
更新:应用@rixo 的建议。
Ext.define('Dir.Application', {
view:['Grid'],
requires: [
'Ext.direct.*',
'Ext.data.*',
'Ext.grid.*'
],
launch: function(){
Ext.Direct.addProvider(Ext.app.REMOTING_API);
}
...
});
我的观点是定义一个商店和一个代理:
Ext.define('Dir.view.Grid', {
extend: 'Ext.grid.Panel',
store: {
proxy: {
type: 'direct',
reader:{root: 'table'},
api: {
create: QueryDatabase.createRecord,
read: QueryDatabase.getResults,
update: QueryDatabase.updateRecords,
destroy: QueryDatabase.destroyRecord
}
}
...
}
现在第一个错误是好的,但我收到一个错误,抱怨QueryDatabase
没有定义。它是通过提供程序定义的,但是当通过应用程序定义中的声明Ext.Direct.addProvider(Ext.app.REMOTING_API);
加载视图时它还没有准备好。views: []
有没有办法让这个工作而不像我的解决方案Ext.application
那样嵌套在里面?
对于 MVC 方式,没有嵌套会更好,就像在文档中解释的那样。Ext.onReady