gpt4 book ai didi

object - 分机 JS 4 : Custom object property value based on condition

转载 作者:行者123 更新时间:2023-12-04 18:13:08 25 4
gpt4 key购买 nike

我正在尝试为我的 Ext 对象创建自定义属性值(基于函数的条件),而不是仅指定一个值。

示例 1:

旧代码(工作)

        this.buttons = [
{
text: 'Save',

enter image description here

新代码(无效)
        this.buttons = [
{
text: function() {
return 'Save X';
},

enter image description here

示例 2:

旧代码(工作)
                    }, {
width: 270,
labelAlign: 'right',
xtype: 'textfield',
name: 'user_id',
fieldLabel: 'User ID',
hidden: true
}]

新代码(无效)
                    }, {
width: 270,
labelAlign: 'right',
xtype: 'textfield',
name: 'user_id',
fieldLabel: 'User ID',
hidden: function() { return true; }
}]

示例 3:

完全基于条件忽略整个文本字段对象(惰性实例):
                    }, {
width: 270,
labelAlign: 'right',
xtype: 'textfield',
name: 'employee_number',
fieldLabel: 'Employee Number'
}]

最佳答案

你根本不能这样做。无法用函数替换类型。在您的情况下,您将函数引用分配给预期为 bool 值的变量,与字符串相同。

解决方案 A。

您应该考虑为自己编写一个现场工厂。在该工厂中,您可以在分配配置之前执行任何功能。 (与 B 类似,但可用于减少函数调用)

解决方案 B。

使用函数引用本身。然后这个应该被执行。 (免除类扩展的要求,并且超过了可重用)

 // The data store containing the list of states
var states = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data : [
{"abbr":"AL", "name":"Alabama"},
{"abbr":"AK", "name":"Alaska"},
{"abbr":"AZ", "name":"Arizona"}
//...
]
});
Ext.namespace('my.util.helper');
my.util.helper.decideHide = function() { return true; }

// Create the combo box, attached to the states data store
Ext.create('Ext.container.Container', {
renderTo: Ext.getBody(),
items: [{
xtype: 'combo',
fieldLabel: 'Choose State',
store: states,
queryMode: 'local',
displayField: 'name',
valueField: 'abbr',
test: my.util.helper.decideHide(),
listeners: {
afterrender: function(n) {
alert(n.test);
}
}
}]
});

解决方案 C。

我在这种情况下使用最多的解决方案是简化 if else 语句
// ... // more code
{
    text: myCondition ? 'Text A' : 'Text B',
// more code
}
// ... // more code

关于object - 分机 JS 4 : Custom object property value based on condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12219991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com