Lightning Web 组件专家超级徽章:挑战 7

Posted

技术标签:

【中文标题】Lightning Web 组件专家超级徽章:挑战 7【英文标题】:Lightning Web Component Specialist Super badge: Challenge 7 【发布时间】:2020-10-18 19:22:30 【问题描述】:

我无法解决挑战 7 我在 JS 文件中有所需的导入和所需的函数。仍然#Trailhead 给出错误:

我们在组件boatsNearMe 控制器中找不到 getLocationFromBrowser() 函数。确保组件是根据要求创建的,包括使用“getCurrentPosition()”来获取导航器的地理位置,使用“position =>”的箭头符号,从位置获取坐标,并将它们分配给控制器的属性'latitude' 和 'longitude',区分大小写。

---- 删除了 CODE 部分以遵守 Trailhead 的政策 ----

我想这是我在代码中遗漏的东西。

【问题讨论】:

【参考方案1】:

您对地理位置纬度和经度的引用缺少“_”

你有他们像这样(单下划线);

rowBoat.Geolocation_Latitude_s

这需要是这样的(双下划线);

rowBoat.Geolocation__Latitude__s

我没有浏览所有代码,但至少这些代码在您的代码中看起来是错误的。 此外,不确定在这种情况下(不再)是否明确需要 @track

【讨论】:

【参考方案2】:

验证码极其挑剔。如果您删除单词位置周围的括号,我认为它会起作用。

【讨论】:

请在您的答案中添加更多信息和来源【参考方案3】:

您可以尝试 2 次更改以通过挑战,

    从getCurrentPosition的回调函数中去掉位置的括号

    按照以下步骤纠正 mapMarkers 创建代码 传递给createMapMarkers 的数据格式如下,

    '["attributes":"type":"Boat__c","url":"/services/data/v48.0/sobjects/Boat__c/a022w000006RA28AAG","Name":"三亚"," Geolocation__Latitude__s":24.8513290,"Geolocation__Longitude__s":119.4862410,"Id":"a022w000006RA28AAG","attributes":"type":"Boat__c","url":"/services/data/v48.0/sobjects/船__c/a022w000006RA2DAAW","Name":"Longxue","Geolocation__Latitude__s":22.6216820,"Geolocation__Longitude__s":113.7630620,"Id":"a022w000006RA2DAAW"]'

因此,您可以使用 JSON.parse(boatData) 对其进行解析,然后对其调用 map() 函数,

this.mapMarkers = JSON.parse(boatData).map((rowBoat) => 
  return 
    location: 
      Latitude: rowBoat.Geolocation__Latitude__s,
      Longitude: rowBoat.Geolocation__Longitude__s
    ,
    title: rowBoat.Name
  ;
);

如上所示,一定要使用双下划线从地理位置访问纬度和经度。

还有一点,在创建 mapMarkers 之前将 isLoading 设置为 true,并在 createMapMarkers 方法中创建后将其设置为 false。

希望这对你有用:)

【讨论】:

我在boatData 之前缺少 JSON.parse 语句。感谢@Arin 的帮助。 很高兴知道它正在工作并且您能够通过挑战@the_phantom

以上是关于Lightning Web 组件专家超级徽章:挑战 7的主要内容,如果未能解决你的问题,请参考以下文章

Lightning Web Component 事件代码示例

Lightning框架示例 - 动态建立Lightning组件

Lightning 组件未显示在 Lightning 选项卡上

Lightning Container 简介

javascript 来自Lightning组件的APEX呼叫

Salesforce Lightning组件中使用Chart.JS实现数据可视化