如何在Sass中创建一个空的Map?

时间:2018-09-28 17:50:07

标签: sass sass-maps

以下代码将在变量$test中创建一个空映射,但是是否有适当的方法来实现此目的?这似乎过于骇人听闻,不足以成为获取空白地图的最佳方法。

$test: map_remove((default:null), 'default');

@if type-of($test) != map {
    @warn "This is not a map: #{inspect($test)}";
}
@else {
    @warn "This is a map: #{inspect($test)}";
}

WARNING: This is a map: ()
         on line 7 of app/styles/functions/map.scss

2 个答案:

答案 0 :(得分:1)

可以通过非常简单的方式创建空地图:

x > a

根据地图上的official documentation,仅使用if即可创建空列表和地图。因此,上面的代码是一个完全有效的空映射,但是在测试类型时,控制台会告诉您它是一个列表(请注意,其类型仍然是映射或列表)。

$emptyMap: ();

一旦您向地图添加了一些内容,控制台就会告诉您它是地图。

()

答案 1 :(得分:0)

没有更好的本机方法,但是您可以将其简化。

{
    xtype: 'textfield',
    fieldLabel: 'License Number',
    name: 'doctor_licenseNumber', 
    id : 'doctor_licenseNumber',
    //allowBlank: false,
    enablekeyEvents: true,  
    hidden: true,               
},  

Ext.getCmp('user_role').on('change', this.onChange, this);

onChange: function(field, newValue) {
    switch(newValue) {
        case '1':
            Ext.getCmp('doctor_type').show();
            Ext.getCmp('doctor_licenseNumber').show();              
            Ext.getCmp('doctor_departmentId').show(); 
            Ext.getCmp('marketing_allocationStatus').hide(); 
            break;
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
            Ext.getCmp('marketing_allocationStatus').show();
            Ext.getCmp('doctor_type').hide();
            Ext.getCmp('doctor_licenseNumber').hide();              
            Ext.getCmp('doctor_departmentId').hide(); 
            break;
        default :
            Ext.getCmp('doctor_type').hide();
            Ext.getCmp('doctor_licenseNumber').hide();              
            Ext.getCmp('doctor_departmentId').hide(); 
            Ext.getCmp('marketing_allocationStatus').hide();
    }
},

另一种解决方案是使用自定义函数。

$map: map-remove((x:x), x);

.foo {
  output: type-of($map); // map
}

SassMeister demo