我正在使用Secha Touch开发一个简单的表单。我为我的模型定义了一个DataStore,如下所示:
App.stores.shopinglists = new Ext.data.Store({
model: 'ShopingList',
autoLoad: false,
proxy: new Ext.data.AjaxProxy({
type: 'ajax',
url: 'http://localhost:2795/ShopingListService/',
reader: {
type: 'json',
root: 'ResultData',
totalProperty: 'Total',
successProperty: 'Success'
},
writer: {
encode: true,
type: 'json'
}
})
});
视图加载正常,我可以看到项目列表并进行编辑。但是,当我单击更新按钮时,我收到以下错误: 未捕获错误:您正在使用ServerProxy但未提供URL。
我在这里缺少什么?代理已定义了url,但是在调用update时,它是未定义的。
编辑:该按钮只是调用控制器操作。
onSaveAction: function () {
var model = this.getRecord();
Ext.dispatch({
controller: 'ShopingLists',
action: (model.phantom ? 'save' : 'update'),
data: this.getValues(),
record: model,
form: this
});
},
控制器执行的代码是:
update: function (params) {
debugger;
var tmpshopingList = new App.models.ShopingList(params.data);
var errors = tmpshopingList.validate();
if (errors.isValid()) {
params.record.set(params.data);
params.record.save();
this.index();
} else {
params.form.showErrors(errors);
}
},
答案 0 :(得分:2)
我想我知道发生了什么:模型知道它有服务器代理,但所有配置都没有被复制。也许这是Sencha Touch 1.x的一个错误。
尝试将proxy
配置放入您的模型,而不是商店。