Salesforce 在字符串中使用自定义标签会抛出;“字段完整性异常”;

Salesforce 在字符串中使用自定义标签会抛出;“字段完整性异常”;,salesforce,lightning,Salesforce,Lightning,我想在列表中使用一个自定义标签,然后将其绑定到一个多选取列表 <aura:attribute name="genderOptions" type="List" default="[ {'label': {!$Label.c.DM_Gender_Male},'Value': 'Male'},

我想在列表中使用一个自定义标签,然后将其绑定到一个多选取列表

   <aura:attribute name="genderOptions" type="List"
                default="[
                         {'label': {!$Label.c.DM_Gender_Male},'Value': 
                                     'Male'},
                         {'label': {!$Label.c.DM_Gender_Female}, 'value': 
                                    'Female'}
                         ]"
                />

当我试图保存组件时,我得到以下异常(字段完整性异常) 保存DMSegmentation.cmp失败:无法在属性值中混合表达式和文字字符串,请尝试像{foo'+v.bar}:Source那样重写


有人能帮我解决这个问题吗?

我找到了解决办法。唯一的解决方案是通过捆绑包中可用的客户端控制器访问这些列表,然后用自定义标签填充它。否则,lightning不允许在组件中创建的列表中使用自定义标签。必须为此使用doInit方法

 ({
     doInit: function(component, event, helper) {
      var values = [
        $A.get("$Label.c.DM_Gender_Male"),
         $A.get("$Label.c.DM_Gender_Female")            
      ];

      component.set('v.genderOptions', values);
   }
})

实际上,可以在组件内部创建此功能。您缺少的两件事是:

  • 引号
    需要表示为XML转义实体

  • 打开和关闭大括号
    {
    }
    需要表示为自定义标签


  • 组成部分:

    <aura:component >
        <aura:attribute 
         name="genderOptions"
         type="List"
         default="{! ' [ ' 
                   + $Label.c.LEFT_CURLY_BRACKET 
                           + '&quot;' + 'label'                   + '&quot;' 
                   + ' : ' + '&quot;' + $Label.c.DM_Gender_Male   + '&quot;' 
                   + ' , ' + '&quot;' + 'value'                   + '&quot;'
                   + ' : ' + '&quot;' + 'Male'                    + '&quot;'
                   + $Label.c.RIGHT_CURLY_BRACKET 
                   + ' , ' 
                   + $Label.c.LEFT_CURLY_BRACKET 
                           + '&quot;' + 'label'                   + '&quot;' 
                   + ' : ' + '&quot;' + $Label.c.DM_Gender_Female + '&quot;' 
                   + ' , ' + '&quot;' + 'value'                   + '&quot;'
                   + ' : ' + '&quot;' + 'Female'                  + '&quot;'
                   + $Label.c.RIGHT_CURLY_BRACKET 
                   + ' ] '
                  }"
        />
        <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
    </aura:component>
    
    记录的结果:

    <?xml version="1.0" encoding="UTF-8"?>
    <CustomLabels xmlns="http://soap.sforce.com/2006/04/metadata">
        <labels>
            <fullName>LEFT_CURLY_BRACKET</fullName>
            <language>en_US</language>
            <protected>false</protected>
            <shortDescription>LEFT CURLY BRACKET</shortDescription>
            <value>{</value>
        </labels>
        <labels>
            <fullName>RIGHT_CURLY_BRACKET</fullName>
            <language>en_US</language>
            <protected>false</protected>
            <shortDescription>RIGHT CURLY BRACKET</shortDescription>
            <value>}</value>
        </labels>
        <labels>
            <fullName>DM_Gender_Male</fullName>
            <language>en_US</language>
            <protected>false</protected>
            <shortDescription>DM_Gender_Male</shortDescription>
            <value>♂</value>
        </labels>
        <labels>
            <fullName>DM_Gender_Female</fullName>
            <language>zh_CN</language>
            <protected>false</protected>
            <shortDescription>DM_Gender_Female</shortDescription>
            <value>♀</value>
        </labels>
    </CustomLabels>
    
    ({
        doInit : 
        function( component , event , helper ){
            var list = component.get("v.genderOptions")
            console.log( list )
            console.log( JSON.parse( list ) ) 
        }
    
    ,   f :
        function(){
    
        }
    })