Sencha Touch 2 - 在模型上保存()后获取 messageProperty
Posted
技术标签:
【中文标题】Sencha Touch 2 - 在模型上保存()后获取 messageProperty【英文标题】:Sencha Touch 2 - Getting messageProperty after save() on a model 【发布时间】:2012-07-10 13:18:20 【问题描述】:我有一个用户模型,它被发布到服务器以在系统上创建一个用户。回复基本上是:
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。我也尝试过传递成功、失败和回调的配置......对我来说似乎什么都没有
谢谢,多姆
【问题讨论】:
【参考方案1】:试试 operation.getResultSet().getMessage()。没试过,但是看源码,应该可以的。
【讨论】:
【参考方案2】:看起来你可以传入一个带有成功和失败方法的对象。来自文档http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Model-method-save
选项:对象/功能 传递给代理的选项。 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);
然后查看我控制台中的数据并相应地重命名变量。
希望这会有所帮助。
【讨论】:
【参考方案3】: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);
);
【讨论】:
以上是关于Sencha Touch 2 - 在模型上保存()后获取 messageProperty的主要内容,如果未能解决你的问题,请参考以下文章
在 Sencha Touch 中重用 ExtJS 的模型和存储