Define custom events that you'll trigger from helper.callserver().

DEX601 - Unit 7 Working with Data

📄 第 563 页 🎬 视频课程

课程章节介绍

让我们来聊聊如何在Salesforce中定义一个自定义事件,并通过`helper.callServer()`来触发它。同时,我们还会用到`lightning:spinner`这个组件,它可以在页面加载时显示一个旋转的加载图标,给用户一个提示,告诉他们系统正在处理中。 首先,自定义事件是Salesforce Lightning组件中用来在不同组件之间传递信息的一种方式。你可以把它想象成一种信号,当一个组件完成了某个任务,它就会发出这个信号,其他组件如果对这个信号感兴趣,就可以捕捉到它并做出相应的反应。 在这个例子中,我们假设你有一个按钮,当用户点击这个按钮时,你需要从服务器获取一些数据。在数据加载的过程中,我们希望显示一个旋转的加载图标,告诉用户“请稍等,数据正在加载中”。 ### 步骤1:定义自定义事件 首先,你需要在你的Lightning组件中定义一个自定义事件。这个事件会在数据加载完成后被触发。你可以这样定义它: ```xml ``` 这个事件有一个属性`data`,用来传递从服务器加载的数据。 ### 步骤2:触发自定义事件 接下来,在你的JavaScript控制器中,当数据加载完成后,你可以通过`helper.callServer()`来触发这个事件。假设你已经有一个方法`fetchData`用来从服务器获取数据: ```javascript fetchData: function(component, event, helper) { // 显示加载图标 component.set("v.showSpinner", true); // 调用服务器端方法 helper.callServer(component, "c.getDataFromServer", function(response) { // 数据加载完成后,隐藏加载图标 component.set("v.showSpinner", false); // 触发自定义事件 var dataLoadedEvent = component.getEvent("dataLoaded"); dataLoadedEvent.setParams({ "data": response }); dataLoadedEvent.fire(); }); } ``` 在这个方法中,我们首先显示加载图标,然后调用`helper.callServer()`来从服务器获取数据。当数据加载完成后,我们隐藏加载图标,并触发自定义事件`dataLoaded`,同时将加载的数据传递给这个事件。 ### 步骤3:使用`lightning:spinner`显示加载图标 最后,在你的组件中,你可以使用`lightning:spinner`来显示加载图标。这个组件会根据`showSpinner`属性的值来决定是否显示: ```xml ``` 当`showSpinner`为`true`时,`lightning:spinner`会显示出来,告诉用户数据正在加载中。 ### 总结 通过以上步骤,你就可以在Salesforce Lightning组件中定义一个自定义事件,并通过`helper.callServer()`来触发它。同时,使用`lightning:spinner`可以在数据加载时给用户一个友好的提示。希望这个解释对你有帮助!如果有任何问题,随时问我哦!