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”> |
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:updateExpenseItem” action=… /> |
显式依赖 | <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”> |
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/wu-kai/
本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接