Sencha Touch 2 - 在模型上的save()之后获取messageProperty

时间:2012-07-10 13:18:21

标签: javascript sencha-touch extjs4 sencha-touch-2

我有一个用户模型,它被POST到服务器以在系统上创建用户。答案基本上是:

{
    success: false,
    message: "User already exists"
}

很酷,在我的模型中我有一个REST代理。代理还附加了一个JSONReader,其中包含以下内容:

messageProperty: 'message',
successProperty: 'success'

所以我创建了我的用户并用以下内容保存:

var user = Ext.create('App.model.User', {name: "Bill"});
user.save(function (records, operation) {
    console.log(records); 
    console.log(operation);
});

但我无法在任何地方看到从服务器返回的错误消息。我所能抓住的是:isSuccessful(),它似乎正确地说是假的。 文档中似乎没有任何关于此的内容。我无法理解为什么没有包含这样的东西或者我是如何错过它的。

operation.getResponse();也返回null。我也试过传递成功,失败和回调的配置......似乎对我没什么用

谢谢,Dom

3 个答案:

答案 0 :(得分:1)

尝试operation.getResultSet()。getMessage()。我没有尝试过,但是查看源代码,看起来这应该可行。

答案 1 :(得分:0)

看起来您可以使用成功和失败方法传入对象。来自文档http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Model-method-save

选项:对象/功能 传递给代理的选项。 Ext.data.Operation的Config对象。如果传递函数,这将自动成为回调方法。为方便起见,除了回调之外,config对象还可能包含成功和失败方法 - 它们都将以Model和Operation作为参数调用。

所以你应该能够做到:

var user = Ext.create('App.model.User', {name: "Bill"});
user.save({
    success: function(){

    },
    failure: function(){

    }
});

我不知道回调是什么,但通常我要做的是找出:

success:function(a,b,c,d){
    console.log(a,b,c,d);
}

然后查看我的控制台中的数据并相应地重命名变量。

希望这有帮助。

答案 2 :(得分:0)

var user = Ext.create('App.model.User', {name: "Bill"});
user.save({
            success : function(){
                console.log('success', arguments);
            },
            failure : function(model, operation){
                var reader = model.getProxy().getReader(),
                    message = reader.getMessage(reader.rawData)
                console.log('failure message : ' + message);

            }
        });