使用Extjs 4,并创建了一个自定义Rest代理来处理与Zend后端api的通信。 (见帖子http://techfrere.blogspot.com/2011/08/linking-extjs4-to-zend-using-rest.html)
当使用Store处理通信时,我使用Ext.require加载代理,然后在类型字段上引用代理,一切都很好并且它加载了我的数据:按照:
Ext.require('App.utils.ZendRest');
...
proxy : {
type : 'zest', // My custom proxy alias
url : '/admin/user'
...
}
然后我决定尝试直接在模型上使用代理......而且没有运气。以上逻辑不起作用
问题
1.当引用zest时,它找不到先前加载的ZendRest类(别名为proxy.zest)
2.它试图从App.proxy.zest加载缺少的类(它不存在。)
所以我尝试将我的课程移到这个位置并重命名为它想要的东西。没有运气。
它加载了类,但仍然没有初始化应用程序...我在任何地方都没有错误,所以很难找出问题出在后面的位置......
现在似乎我将不得不通过商店恢复使用我的Zend Rest代理。
问题是......还有其他人看过这种行为吗?这是一个错误,还是我错过了什么?
...谢谢
答案 0 :(得分:3)
使用您的代理定义,我设法让它工作。
我不确定为什么它不适合你。我仅将ZendRest
移至Prj.proxy
命名空间,并将requires: ['Prj.proxy.ZendRest']
添加到模型中。
代码:
// controller/Primary.js
Ext.define('Prj.controller.Primary', {
extend: 'Ext.app.Controller',
stores: ['Articles'],
models: ['Article'],
views: ['article.Grid']
});
// model/Article.js
Ext.define('Prj.model.Article', {
extend: 'Ext.data.Model',
fields: [
'title', 'author', {
name: 'pubDate',
type: 'date'
}, 'link', 'description', 'content'
],
requires: ['Prj.proxy.ZendRest'],
proxy: {
type: 'zest',
url: 'feed-proxy.php'
}
});
// store/Articles.js
Ext.define('Prj.store.Articles', {
extend: 'Ext.data.Store',
autoLoad: true,
model: 'Prj.model.Article'
});
// proxy/ZendRest.js
Ext.define('Prj.proxy.ZendRest', {
extend: 'Ext.data.proxy.Ajax',
alias : 'proxy.zest',
appendId: true,
batchActions: false,
buildUrl: function(request) {
var me = this,
operation = request.operation,
records = operation.records || [],
record = records[0],
format = me.format,
reqParams = request.params,
url = me.getUrl(request),
id = record ? record.getId() : operation.id;
if (me.appendId && id) {
if (!url.match(/\/$/)) {
url += '/';
}
url += 'id/' + id;
}
if (format) {
reqParams['format'] = format;
}
/* <for example purpose> */
//request.url = url;
/* </for example purpose> */
return me.callParent(arguments);
}
}, function() {
Ext.apply(this.prototype, {
actionMethods: {
create : 'POST',
read : 'GET',
update : 'PUT',
destroy: 'DELETE'
},
/* <for example purpose> */
reader: {
type: 'xml',
record: 'item'
}
/* </for example purpose> */
});
});