salesforce的response.getReturnValue()

這些日子在搞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() {

 

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章