es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Componente Salesforce Aura: obteniendo el v.recordId actual para la variable de flujo.

Soy un traductor de documentos de tecnología de la información. Traduzca lo siguiente al español. No traduzca el código y la salida en formato markdown.

Soy bastante nuevo en Aura Component y Javascript, así que pido disculpas por mi lenguaje si lo encuentra impreciso.

En mi pregunta anterior, pude saber cómo puedo obtener el ID de registro actual y pasarlo al flujo como una variable en el controlador del componente. Mi objetivo es obtener el ID de registro actual de la página, que puede ser oportunidad, cuenta y registro líder, o incluso tenerlo como nulo. mi flujo está equipado para manejar todos los IDs.

Aquí está mi código:

Componente:

< aura: component implements = "flexipage: availableForAllPageTypes, force: hasRecordId, lightning: isUrlAddressable" access = "global" > 
<aura:handler name="change" value="{!v.pageReference}" action="{!c.reInit}" event="force:refreshView">
<aura:handler name="change" value="{!v.recordId}" action="{!c.onRecordIdChange}">
<lightning: utilitybarapi="" aura:="" id="utilitybar">
<br>
 El ID de cuenta es {!v.recordId} // Se actualiza correctamente cada vez que cambio de la pantalla principal al ID de registro; se actualiza en tiempo real.
<lightning:formattedtext value="{!v.recordId}" aura:id="ThisRecord"></lightning:formattedtext>
<lightning: flow="" aura:="" id="flowData" onstatuschange="{!c.minimizeUtility}">

Controlador de componente JS:

({

minimizeUtility: función(componente, evento, ayudante) {
si (event.getParam(“status”) === “FINISHED”) {

    var utilityAPI = component.find("utilitybar");
    utilityAPI.minimizeUtility();
    }
},

onRecordIdChange: función(componente, evento, ayudante) {

   $A.get("e.force:refreshView").fire();

    var newRecordId = component.get("v.recordId");
    console.log(newRecordId);
      // Busque el componente cuyo aura: id es "flowData"
    var flow = component.find("flowData");

  const recordId = component.find("ThisRecord").get("v.value"); const inputs = []; if(recordId) inputs.push({name:"recordId",type:"String",value:recordId});

    // En ese componente, inicie su flujo. Haga referencia al nombre de la API del flujo.
    flow.startFlow("MyFlowHere",
                 inputs );


},

   reInit: función(componente, evento, ayudante) {
   alert("¡Hola! ¡Aquí!"); 
},

getInput: función(cmp, evento) {
alert(“¡Hola! ¡Aquí!”);
}

})

En este momento, tengo el componente configurado y está enviando el ID de registro actual según lo esperado, pero hay un pequeño problema. Verá, si estoy en la pantalla principal y cambio a una cuenta, v.RecordID no se actualiza, aunque está configurado para volver a iniciar el flujo cada vez que cambia v.RecordID, pero no lo hace. Por lo tanto, cuando la pantalla de inicio tiene v. Record = nulo, aunque salté a una página de cuenta, no actualiza el ID de registro allí, por lo que se pasa un ID incorrecto.

Necesito una forma de actualizar o volver a iniciar constantemente la función de flujo cada vez que cambie la página o v. RecordID cambie para volver a representar const recordId = component.find("ThisRecord").get("v.value"); para que siempre obtenga el ID actualizado. Puedo ver que el texto del componente Aura se actualiza cada vez que cambio de registro, pero la función que obtiene el ID no se actualiza, por lo que siempre tiene un ID antiguo.

He intentado cambiar la configuración de sesión en mi organización, pero eso no ayudó. Leí sobre esto aquí, pero eso no ayudó.

¡Por favor, háganme saber si conocen alguna manera de ayudarme! ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para refrescar el flujo cuando cambia el ID del registro en el componente Aura

    Para solucionar el problema de no actualizar la variable recordId cuando cambia el ID del registro, es necesario realizar algunos cambios en el código del componente y del controlador. Aquí está el código actualizado que debería funcionar para ti:

    Componente:

    <aura:component implements="flexipage:availableForAllPageTypes,force:hasRecordId,lightning:isUrlAddressable" access="global">
        <aura:handler name="change" value="{!v.recordId}" action="{!c.onRecordIdChange}"></aura:handler>
        <lightning:utilitybarapi aura:id="utilitybar"></lightning:utilitybarapi>
        <br>
        La ID de cuenta es {!v.recordId}
        <lightning:formattedtext value="{!v.recordId}" aura:id="ThisRecord"></lightning:formattedtext>
        <lightning:flow aura:id="flowData" onstatuschange="{!c.minimizeUtility}"></lightning:flow>
    </aura:component>
    

    JS Controlador del componente:

    ({
        minimizeUtility: function (component, event, helper) {
            if (event.getParam("status") === "FINISHED") {
                var utilityAPI = component.find("utilitybar");
                utilityAPI.minimizeUtility();
            }
        },
    
        onRecordIdChange: function (component, event, helper) {
    
            // Encuentra el componente cuyo aura:id es "flowData"
            var flow = component.find("flowData");
    
            // Obtén la ID del registro actualizado
            const recordId = component.get("v.recordId");
    
            // Pasa la ID del registro al flujo como entrada
            const inputs = [];
            if (recordId) inputs.push({ name: "recordId", type: "String", value: recordId });
    
            // En ese componente, inicia tu flujo. Haz referencia al nombre de API del flujo.
            flow.startFlow("MiFlujoAqui", inputs);
        },
    })
    

    Los cambios realizados en el código son:

    1. En la función onRecordIdChange, movimos el código para obtener la recordId dentro de la función. Esto asegura que el valor actualizado de recordId se pase al flujo cada vez que se llama la función.
    2. Agregamos código para actualizar la vista usando $A.get("e.force:refreshView").fire(); cuando cambia la página.
    3. Quitamos el aura:handler para v.pageReference en el componente porque no se necesita para el escenario actual.

    Estos cambios deberían asegurar que el flujo siempre sea llamado con el valor actualizado de recordId cuando cambia la ID del registro.

Comments are closed.