因此,我下载了名为ember-leaflet的插件https://miguelcobain.github.io/ember-leaflet/docs/container。我正在使用的ember-cli版本为2.6.2
。这是我的代码
<LeafletMap lat=lat lng=lng zoom=zoom as |layers|>
<layers.tile url="https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png"/>
</LeafletMap>
控制台上显示的错误是ember.debug.js:2925 Uncaught DOMException: Failed to execute 'setAttribute' on 'Element': '|layers|' is not a valid attribute name.
任何回应都值得赞赏
答案 0 :(得分:1)
好的,因此,更仔细地研究您的问题,您发布的html不正确。应该是:
<LeafletMap @lat={{lat}} @lng={{lng}} @zoom={{zoom}} as |layers|>
<layers.tile @url="https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png"/>
</LeafletMap>
在尖括号调用中,必须使用@
符号将参数传递给示例中未使用的组件。
但是,让我们往后走一步。 3.4中发布了尖括号组件调用。如果您在3.4之前并希望使用尖括号调用,则必须安装polyfill可用。归根结底,尖括号调用主要是语法上的差异(尽管不要误会我,但捆绑了一些改进)。尽管使用了该语法的传单文档,也不必在旧的ember
应用中使用尖括号调用。我在生产中有一个3.8余烬应用程序,因为没有时间进行转换,所以不使用单个尖括号。
您可以轻松地使用此语法,而不必费心尝试使用polyfill并等待使用尖括号语法,直到进入3.4 +。
{{#leaflet-map lat=lat lng=lng zoom=zoom as |layers|}}
{{layers.tile url="https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png"}}
{{/leaflet-map}}
余烬指南具有conversion guide,您可以将其用作参考点。学习起来应该不难。我编写了一个Objective-C应用程序维护程序,并且在查看指南,stackoverflow等时经常需要将Swift语法转换为Objective C语法。这仅仅是维护和使用遗留问题的本质:)