根据组合框中不同的选定值绑定字段状态(禁用或隐藏)
Binding a field state (disabled or hidden) according to different selected values in a combobox
我想根据组合框中不同的 selected 值绑定字段状态(禁用或隐藏)。
如果只有一个选项 select 在组合框中编辑效果很好
Fiddle: https://fiddle.sencha.com/#fiddle/1itf
计算器溢出:
我尝试了以下方法:
bind: {
disabled: ('{isAlabama} || {isAlaska}')
},
显然有效。如果我 select Alabama 或 Alaska,字段 Alabama 是隐藏的。
问题是当我 select 组合框值 Arizona 应该显示字段
阿拉巴马州和没有阿拉斯加的阿拉斯加只显示阿拉斯加。
Fiddle:https://fiddle.sencha.com/#fiddle/1j36 已编辑
绑定可以做到吗?
我稍微改写了公式并将 AL||AK 逻辑移动到 hideAlabama
公式中,而不是在禁用的 属性 中。这使 hidden
属性 保持为单个公式评估,因为看起来多个公式评估没有按预期运行。
Ext.application({
name : 'Fiddle',
launch : function() {
}
});
var states = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data : [
{"abbr":"AL", "name":"Alabama"},
{"abbr":"AK", "name":"Alaska"},
{"abbr":"AZ", "name":"Arizona"}
]
});
Ext.define('My.ViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.myviewmodel',
formulas: {
hideAlabama: function(get) {
return get('comboboxvalue') === 'AL' || get('comboboxvalue') === 'AK';
},
hideAlaska: function(get) {
return get('comboboxvalue') === 'AK';
},
hideArizona: function(get) {
return get('comboboxvalue') === 'AZ';
}
}
});
Ext.create('Ext.form.Panel', {
title: 'Sign Up Form',
width: 300,
height: 230,
bodyPadding: 10,
margin: 10,
layout: {
type:'anchor',
align: 'stretch'
},
viewModel:{
type: 'myviewmodel'
},
items: [{
xtype: 'combobox',
fieldLabel: 'Choose State',
store: states,
queryMode: 'local',
displayField: 'name',
valueField: 'abbr',
reference:'combobox',
bind: {
value: '{comboboxvalue}'
}
},{
xtype: 'textfield',
fieldLabel: 'If Alabama, hide',
bind: {
hidden: '{hideAlabama}'
}
},{
xtype: 'textfield',
fieldLabel: 'If Alaska, hide',
bind: {
hidden: '{hideAlaska}'
}
},{
xtype: 'textfield',
fieldLabel: 'If Arizona, hide',
bind: {
hidden: '{hideArizona}'
}
}],
renderTo: Ext.getBody()
});
我想根据组合框中不同的 selected 值绑定字段状态(禁用或隐藏)。
如果只有一个选项 select 在组合框中编辑效果很好
Fiddle: https://fiddle.sencha.com/#fiddle/1itf
计算器溢出:
我尝试了以下方法:
bind: {
disabled: ('{isAlabama} || {isAlaska}')
},
显然有效。如果我 select Alabama 或 Alaska,字段 Alabama 是隐藏的。
问题是当我 select 组合框值 Arizona 应该显示字段 阿拉巴马州和没有阿拉斯加的阿拉斯加只显示阿拉斯加。
Fiddle:https://fiddle.sencha.com/#fiddle/1j36 已编辑
绑定可以做到吗?
我稍微改写了公式并将 AL||AK 逻辑移动到 hideAlabama
公式中,而不是在禁用的 属性 中。这使 hidden
属性 保持为单个公式评估,因为看起来多个公式评估没有按预期运行。
Ext.application({
name : 'Fiddle',
launch : function() {
}
});
var states = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data : [
{"abbr":"AL", "name":"Alabama"},
{"abbr":"AK", "name":"Alaska"},
{"abbr":"AZ", "name":"Arizona"}
]
});
Ext.define('My.ViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.myviewmodel',
formulas: {
hideAlabama: function(get) {
return get('comboboxvalue') === 'AL' || get('comboboxvalue') === 'AK';
},
hideAlaska: function(get) {
return get('comboboxvalue') === 'AK';
},
hideArizona: function(get) {
return get('comboboxvalue') === 'AZ';
}
}
});
Ext.create('Ext.form.Panel', {
title: 'Sign Up Form',
width: 300,
height: 230,
bodyPadding: 10,
margin: 10,
layout: {
type:'anchor',
align: 'stretch'
},
viewModel:{
type: 'myviewmodel'
},
items: [{
xtype: 'combobox',
fieldLabel: 'Choose State',
store: states,
queryMode: 'local',
displayField: 'name',
valueField: 'abbr',
reference:'combobox',
bind: {
value: '{comboboxvalue}'
}
},{
xtype: 'textfield',
fieldLabel: 'If Alabama, hide',
bind: {
hidden: '{hideAlabama}'
}
},{
xtype: 'textfield',
fieldLabel: 'If Alaska, hide',
bind: {
hidden: '{hideAlaska}'
}
},{
xtype: 'textfield',
fieldLabel: 'If Arizona, hide',
bind: {
hidden: '{hideArizona}'
}
}],
renderTo: Ext.getBody()
});