使用Ajaxproxy更新Sencha Touch Data Store中的记录

时间:2012-02-24 11:12:31

标签: sencha-touch

我正在使用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);
    }
},

1 个答案:

答案 0 :(得分:2)

我想我知道发生了什么:模型知道它有服务器代理,但所有配置都没有被复制。也许这是Sencha Touch 1.x的一个错误。

尝试将proxy配置放入您的模型,而不是商店。