ExtJS 5:绑定到其他类属性,例如allowBlank

inc*_*nez 4 javascript data-binding extjs mvvm extjs5

我对允许绑定哪些配置值和哪些不被绑定感到困惑。当前,不允许绑定allowBlank,因为我收到一条错误消息Ext.mixin.Bindable.applyBind(): Cannot bind allowBlank on Ext.form.field.ComboBox - missing a setAllowBlank method.,提示我如果使用配置,则不会收到该错误,但它不能按预期工作:

xtype: 'combobox',
anchor: '100%',
fieldLabel: 'Affiliation',
name: 'AffiliationId',
displayField: 'Abbreviation',
valueField: 'AffiliationId',
queryMode: 'local',
typeAhead: true,
config: {
  forceSelection: true,
  allowBlank: false
},
bind: {
  store: '{affiliationStore}',
  allowBlank: '{allowBlankAffiliation}',
  forceSelection: '{forceSelectionAffiliation}'
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如何绑定allowBlank公式或其他任何属性?这是否可能,或者我完全不了解某些内容?如果是这样,我怎么知道我可以绑定什么和我不能绑定什么?

Tar*_*ass 6

只有具有setter属性,一组方法应在存在文档,可以结合。'setAllowBlank'不存在。allowBlank没有开箱即用的二传手,因为它没有放在combobox对象的配置中。如您在源代码中看到的:

http://docs.sencha.com/extjs/5.0/5.0.1-apidocs/source/Text.html#Ext-form-field-Text-cfg-allow空白

通过allowBlank像您一样将a设置为配置,您只会抑制该错误。

您可以做的是扩展ComboBox并创建一个自定义配置属性。之后,您可以覆盖更新方法(由配置系统创建)并allowBlank手动设置。

Ext.define('MyComboBox', {
    extend: 'Ext.form.field.ComboBox',

    alias: 'widget.MyComboBox',

    config: {
        requireMe: false
    },

    // override of generated update method
    updateRequireMe: function(value) {
        this.allowBlank = !value;
    }
});
Run Code Online (Sandbox Code Playgroud)

用法:

xtype: 'MyComboBox',
valueField: '_id',
displayField: 'name',
queryMode: 'local',
requireMe: '{!allowBlank}',
bind: {
    store: '{people}'
}
Run Code Online (Sandbox Code Playgroud)