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 选项卡上