2

我有一个用户模型,它被发布到服务器以在系统上创建一个用户。响应基本上是:

{
    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() 似乎正确地说是假的。文档中似乎没有关于此的任何内容。我不明白为什么不包括这样的东西,或者我怎么想念它。

操作.getResponse(); 也返回 null。我也尝试过传递成功、失败和回调的配置......对我来说似乎什么都没有

谢谢, 多姆

4

3 回答 3

1

Try operation.getResultSet().getMessage(). I haven't tried it, but looking at the source code, it seems like this should work.

于 2012-07-11T23:59:21.383 回答
0

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

options : 传递给代理的对象/函数选项。Ext.data.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);
}

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

希望这可以帮助。

于 2012-07-11T23:52:47.733 回答
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);

            }
        });
于 2012-11-26T06:53:42.863 回答