• Salesforce学习之路(九)Org的命名空间


    1. 命名空间的适用场景

    每个组件都是命名空间的一部分,如果Org中设置了命名空间前缀,那么需使用该命名空间访问组件。否则,使用默认命名空间访问组件,系统默认的命名空间为“c”。

    • 如果Org没有创建命名空间前缀,下述情况必须使用“c”命名空间前缀:
      • 引用自定义创建的组件
      • 引用自定义创建的事件
    • 如果Org没有创建命名空间,下述情况下Org会自动使用隐式命名空间,即该场景下无需使用指定的命名空间前缀:
      • 引用自定义对象
      • 引用标准对象和自定义对象的字段
      • 引用Apex的控制类
    • 如果Org创建了命名空间前缀,下述情况下必须使用自定义的命名空间前缀:
      • 引用自定义创建的组件
      • 引用自定义创建的事件
      • 引用自定义对象
      • 引用标准对象和自定义对象的字段
      • 引用Apex的控制类
      • 引用静态资源

    2 命名空间命名规则

    命名规则必须满足以下条件:

    • 以字母开头
    • 包含1-15个字母数字字符
    • 不包含两个下划线

    例如: myNamespace123和my_namespace是有效的;123MyNamespce和my__namespace是无效的。

    3 创建命名空间

    Setup-->Packages(注意:该条目只在Salesforce Classic版本中才有)-->Developer Settings-->Edit

    Check Avaliability校验名称是否满足规则。

    4 命名空间使用示例

    这里以Aura组件使用命名空间作为示范。

    • Org没有设置命名空间前缀
    引用项 示例
    标记中使用组件 <c:myComponent>
    系统属性中使用组件

    <aura:component extends="c:myComponent">
    <aura:component implements="c:myInterface">

    Apex控制类 <aura:component controller="ExpenseController">
    属性的类型为自定义对象 <aura:attribute name="expense" type="Expense__c" /> 
    属性的类型为自定义对象,并且设置默认值
    <aura:attribute name="newExpense" type="Expense__c"
        default="{ 'sobjectType': 'Expense__c',
                   'Name': '',
                   'Amount__c': 0,
                   …
        }" />
    表达式中含有自定义对象的字段 <ui:inputNumber value="{!v.newExpense.Amount__c}" label=… />
    javascript函数中含有自定义对象字段
    updateTotal: function(component) {
        …
        for(var i = 0 ; i < expenses.length ; i++){
            var exp = expenses[i];
            total += exp.Amount__c;
        }
        …
    }
    在Javascript函数中动态创建新的组件
    var myCmp = $A.createComponent("c:myComponent", {},
        function(myCmp) { }
    );
    在Javascript函数中的接口对比 aCmp.isInstanceOf("c:myInterface")
    注册事件 <aura:registerEvent type="c:updateExpenseItem" name=… />
    事件处理 <aura:handler event="c:updateExpenseItemaction=… />
    显式依赖 <aura:dependency resource="markup://c:myComponent" />
    Javascript函数中的应用事件 var updateEvent = $A.get("e.c:updateExpenseItem");
    静态资源 <ltng:require scripts="{!$Resource.resourceName}styles="{!$Resource.resourceName}" />
    • Org设置了命名空间前缀
    引用项 示例
    标记中使用组件 <yournamespace:myComponent />
    系统属性中使用组件

    <aura:component extends="yournamespace:myComponent">
    <aura:component implements="yournamespace:myInterface">

    Apex控制类 <aura:component controller="yournamespace.ExpenseController">
    属性的类型为自定义对象 <aura:attribute name="expenses" type="yournamespace__Expense__c[]" />
    属性的类型为自定义对象,并且设置默认值
    <aura:attribute name="newExpense" type="yournamespace__Expense__c"
        default="{ 'sobjectType': 'yournamespace__Expense__c',
                   'Name': '',
                   'yournamespace__Amount__c': 0,
                   …
        }" />
    表达式中含有自定义对象的字段 <ui:inputNumber value="{!v.newExpense.yournamespace__Amount__c}" label=… />
    javascript函数中含有自定义对象字段
    updateTotal: function(component) {
        …
        for(var i = 0 ; i < expenses.length ; i++){
            var exp = expenses[i];
            total += exp.yournamespace__Amount__c;
        }
        …
    }
    在Javascript函数中动态创建新的组件
    var myCmp = $A.createComponent("yournamespace:myComponent",
        {},
        function(myCmp) { }
    );
    在Javascript函数中的接口对比 aCmp.isInstanceOf("yournamespace:myInterface")
    注册事件 <aura:registerEvent type="yournamespace:updateExpenseItem" name=… />
    事件处理 <aura:handler event="yournamespace:updateExpenseItem" action=… />
    显式依赖 <aura:dependency resource="markup://yournamespace:myComponent" />
    Javascript函数中的应用事件 var updateEvent = $A.get("e.yournamespace:updateExpenseItem");
    静态资源 <ltng:require scripts="{!$Resource.yournamespace__resourceName}styles="{!$Resource.yournamespace__resourceName}" />


    作者:吴家二少

    博客地址:https://www.cnblogs.com/cloudman-open/

    本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接

  • 相关阅读:
    全排列算法(java实现) 组合算法实现
    int -2147483648 ----- 2147483647
    Gradel 多渠道打包 代码混淆
    Android开发环境搭建
    自定义相册、九宫格显示图片
    新技术:retrofit
    新技术:dagger
    主流架构:MVVP
    GreenDao3.2的使用
    第三方框架:EventBus
  • 原文地址:https://www.cnblogs.com/cloudman-open/p/11897175.html
Copyright © 2020-2023  润新知