Salesforce學習之路(十)Org的命名空間

1. 命名空間的適用場景

每一個組件都是命名空間的一部分,若是Org中設置了命名空間前綴,那麼需使用該命名空間訪問組件。不然,使用默認命名空間訪問組件,系統默認的命名空間爲「c」。javascript

  • 若是Org沒有建立命名空間前綴,下述狀況必須使用「c」命名空間前綴:
    • 引用自定義建立的組件
    • 引用自定義建立的事件
  • 若是Org沒有建立命名空間,下述狀況下Org會自動使用隱式命名空間,即該場景下無需使用指定的命名空間前綴:
    • 引用自定義對象
    • 引用標準對象和自定義對象的字段
    • 引用Apex的控制類
  • 若是Org建立了命名空間前綴,下述狀況下必須使用自定義的命名空間前綴:
    • 引用自定義建立的組件
    • 引用自定義建立的事件
    • 引用自定義對象
    • 引用標準對象和自定義對象的字段
    • 引用Apex的控制類
    • 引用靜態資源

2 命名空間命名規則

命名規則必須知足如下條件:java

  • 以字母開頭
  • 包含1-15個字母數字字符
  • 不包含兩個下劃線

例如: myNamespace123和my_namespace是有效的;123MyNamespce和my__namespace是無效的。函數

3 建立命名空間

Setup-->Packages(注意:該條目只在Salesforce Classic版本中才有)-->Developer Settings-->Editui

Check Avaliability校驗名稱是否知足規則。spa

4 命名空間使用示例

這裏以Aura組件使用命名空間做爲示範。code

  • Org沒有設置命名空間前綴
引用項 示例
標記中使用組件 <c:myComponent>
系統屬性中使用組件

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

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}" />

做者:吳家二少blog

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

本文歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接

相關文章
相關標籤/搜索