【问题标题】:Update record in Sencha Touch Data Store with Ajaxproxy使用 Ajaxproxy 更新 Sencha Touch 数据存储中的记录
【发布时间】:2012-02-25 08:07:13
【问题描述】:

我正在使用 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,但是当调用更新时,它是未定义的。

编辑:按钮只是调用一个控制器动作。

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);
    }
},

【问题讨论】:

  • 请张贴更新按钮执行的代码
  • 您好:感谢您的重播。我将代码放在了我的第一个评论中。

标签: sencha-touch


【解决方案1】:

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

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

【讨论】:

  • rdougan,感谢您的帮助!我正在使用本地存储作为 repo 的教程,并且相同的代码运行良好。我将代理配置放在模型中,它正在发布!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多