【发布时间】:2021-03-31 06:24:55
【问题描述】:
我有 3 个这样的字段:
{
name: 'firstName',
fieldLabel: 'First name',
bind: '{person.firstName}',
xtype: 'textfield',
allowBlank: false,
listeners: {
blur : {
buffer : 1000,
fn : 'detectGender'
},
}
},
{
name: 'middleName',
fieldLabel: 'Middle name',
bind: '{person.midleName}',
xtype: 'textfield',
allowBlank: true,
listeners: {
blur : {
buffer : 1000,
fn : 'detectGender'
},
}
},
{
name: 'lastName',
fieldLabel: 'Last name',
bind: '{person.lastName}',
xtype: 'textfield',
allowBlank: true,
listeners: {
blur : {
buffer : 1000,
fn : 'detectGender'
},
}
},
而且我有一个判断用户性别的函数:
detectGender: function () {
const vm = this.getViewModel()
const firstName = vm.get('person.firstName');
const lastName = vm.get('person.lastName');
const personName = `${firstName ? firstName : ' '}${middleName ? middleName : ' '}${lastName ? lastName : ' '}`
if (firstName) {
//ajax request to server with data: personName
// personName migth be SarahSmith, or Sarah, or SarahEllen, or SarahEllenSmith
}
},
它有效,但我的问题是,如果所有这些字段都已填写,则函数“detectGender”会运行三次。我的服务器返回三个响应。但我只需要运行一次。也许有一些方法可以为视图模型创建一个事件,以便在更改人名时进行监听?
或者关于如何只从三个字段中发送用户名一次的任何想法?
希望我很清楚...请任何帮助
【问题讨论】:
-
只检查3个名字不为空。类似 if(!Ext.isEmpty(firstName) && !Ext.isEmpty(middleName) && !Ext.isEmpty(lastName) { SEND YOUR AJAX REQUEST }
标签: extjs listener viewmodel bind