2012-07-10 68 views
2

我有一个User模型被发送到服务器以在系统上创建用户。回应基本上是:Sencha Touch 2 - 在模型上保存()后获取messageProperty

{ 
    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。我也试着通过与成功,失败和回调一个配置......似乎什么都没有对我

感谢,大教堂

回答

0

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

选项:对象/功能 传递给代理的选项。为Ext.data.Operation配置对象。如果你传递一个函数,这将自动成为回调方法。为了方便起见,配置对象除了回调以外还可能包含成功和失败的方法 - 它们都将以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); 
} 

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

希望这会有所帮助。

1

尝试使用operation.getResultSet()。getMessage()。我没有尝试过,但看着源代码,似乎这应该工作。

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

      } 
     });