У меня есть форма, что я Подавать с успехом и провалом обратных вызовов:Форма в ExtJS 6
Вид:
Ext.define('App.view.CommentForm', {
extend: 'Ext.form.Panel',
alias: 'widget.ship-commentForm',
url: 'addcomment.php',
items: [{
xtype: 'textarea',
fieldLabel: 'Comment',
name: 'text',
allowBlank: false,
maxLength: 1000
},{
xtype: 'textfield',
fieldLabel: 'User name',
name: 'username',
readOnly: true
}],
fbar: [{
text: 'Save',
formBind: true,
itemId: 'submit'
}]
})
И контроллер:
Ext.define('App.controller.MyController', {
init: function(){
this.control({
'ship-commentForm button#submit': {click: this.onFormSubmit},
...
onFormSubmit: function(btn){
var form = btn.up('form').getForm(),
me = this,
values = form.getValues();
form.submit({
success: function(form, action){
console.log('success')
},
failure: function(form, action){
console.log('failure')
}
})
setTimeout(function(){btn.up('window').close()}, 100)
},
В то время как это работает отлично в ExtJs4, в ExtJs6, форма отправляется так, как должна, но обратные вызовы успеха и отказа больше не вызываются. Это должно по-прежнему работать в соответствии с the documentation of submit()
.
N.B. В откликается сервер содержит действительный JSON строку:
{"success":true,"msg":"Comment saved"}
Edit: я добавил код в контроллере, который я подозреваю, является вопрос: setTimeout(btn.up('window').close(), 100)
Я сделал образец скрипку, чтобы проверить вашу проблему, и это работает отлично на моей скрипке https://fiddle.sencha.com/#view/editor&fiddle/1qjr –
@SuryaPrakashTumma Спасибо. Мне также удалось заставить его работать в скрипке https://fiddle.sencha.com/#view/editor&fiddle/1qjq всего несколько минут назад. Я еще не уверен, где проблема. –
Не было бы лучшей идеей вызывать метод '.close()' в обратном вызове успеха 'form.submit'? Или это какое-то требование? – qmateub