這些日子在搞salesforce,Lightning語言開發,做一些例子。有些沒弄懂的東西,在這兒記錄一下。
參考:https://www.cnblogs.com/zero-zyq/p/10489626.html
https://trailhead.salesforce.com/en/content/learn/superbadges/superbadge_lcf
1,response.getReturnValue()
這首先是一個salesforce Lightning組件的一部分。
BoatSearchResultsHelper.js的代碼是這樣的:
我大概解釋一下這些都是什麼鬼哈。
onSearch:方法名,別人調用的時候,一般用helper.onSearch來調用它。
component:就是salesforce裏的組件容器啦,比如這裏的component.get("v.boatTypeId1") 。這個boatTypeId1就是組件名。前面那個v就是說這是個變量,在salesforce組件的視圖裏,定義的變量都可以用v來引用,跟Javascript的萬金油document.getElementTypeById差不多。
爲了方便理解,我貼倆變量:
<aura:attribute name="boats" type="Boat__c[]" />
<aura:attribute name="boatTypeId1" type="String" />
c.getBoats:這個玩意兒就是服務器端的東西。稱之爲Apex。用它來調回服務器代碼,返回數據庫數據用的。
完整的請看下面的源碼。c嘛,就是說是服務端controller。題外話,由於salesforce是客戶端和服務器端都有controller,所以名字別重了,不然出錯的時候,挺難理解的。
action.setParams:這個就是傳參數啦。
action.setCallback:這個是回調。因爲salesforce是多租戶環境,所以呢都是異步,不會等你執行完的。那怎麼知道執行完了呢,就是使用這個回調,服務端執行完了,就返回來執行它,繼續幹活。
說了一大堆,我的問題終於到了:
component.set("v.boats",response.getReturnValue());這個是返回服務器端數據用的。
boats是一個視圖組件變量,類型是Boat__c[ ]。這個東西按理來說,應該是一個Jason對象,裏面嵌一堆具體的數據。
比如像
{
{
"BoatType__c":aaaaaaa1,
"Description__c":bbbbbb,
.....
},
{
"BoatType__c":aaaaaaa2,
"Description__c":bbbbbb,
.....
},
......
}
但是當我在Chrome按F12,Debug底下看變量的時候,它居然給我以下這個玩意兒:
value: function(){const o=$r(e,arguments,r);let i=t[n](...o);return r.afterCallback&&(i=r.afterCallback(i)),r.metrics&&Qt(n),Fr(e,i,r)}
有誰能告訴我,這個東西就是是怎麼看的嗎??先謝謝了。
<源碼參照>
({
onSearch : function(component,event) {
var currentBoatType = component.get("v.boatTypeId1");
var action = component.get("c.getBoats");
if(currentBoatType=='All Types'){
currentBoatType = '';
}
action.setParams({
"boatTypeId":currentBoatType
});
action.setCallback(this,function(response){
var state = response.getState();
if(component.isValid() && state ==='SUCCESS'){
component.set("v.boats",response.getReturnValue());
}else{
console.log("Failed with state1:"+state);
}
});
$A.enqueueAction(action);
}
})
<Apex參照>
public class BoatSearchResults {
public List<Boat__c> Boats{get;set;}
@AuraEnabled
public static List<BoatType__c> getboattypes(){
return [select Name,Id From BoatType__c];
}
@AuraEnabled
public static List<Boat__c> getBoats(string boatTypeId){
List<Boat__c> boatTypeList = new List<Boat__c>();
if(boatTypeId!=''){
boatTypeList=[
select
Id,
BoatType__c,
Picture__c,
Name,
Contact__r.Name,
Geolocation__Latitude__s,
Geolocation__Longitude__s
from Boat__c
where BoatType__c = :boatTypeId
];
}else{
boatTypeList=[
select
Id,
BoatType__c,
Picture__c,
Name,
Contact__r.Name,
Geolocation__Latitude__s,
Geolocation__Longitude__s
from Boat__c
];
}
return boatTypeList;
}
public BoatSearchResults() {
}
}