在 Angular5 应用程序的传单弹出窗口中调用 zone.run
Calling zone.run in leaflet popup within Angular5 app
我们有一个带有嵌入式传单地图的 angular5 应用程序。该地图将弹出窗口绑定到各个点,这些点又打开了一个详细信息组件。这个复杂的过程在 chrome 和 firefox 中运行良好,但在 Internet Explorer 中因神秘的 "Syntax error" 而失败。您可以在以下位置查看该应用程序:
http://ptappdev.gisdata.mn.gov/ptappt
单击任意地图标记,然后单击 "view details"。
如果 javascript 嵌套引号有问题,我已经尝试了各种转义模式。仍然没有运气。生成此弹出窗口的代码是:
layer.bindPopup('<p>' + feature.properties[Object.keys(feature.properties)[0]] + '<br /><a target="_blank" href="' + feature.properties['park_home_page_url']
+ '">open website</a><br /><a href="javascript:void(0);" '
+ 'OnClick = "'
//+ 'alert('test');'
+ 'window['angularComponentRef'].zone.run(() => {window['angularComponentRef'].component.showResultDtlViaMapTip('
+ '"' + feature.properties['name'] + '",'
+ '"' + feature.properties['id'] + '",'
+ '"' + feature.properties['park_admin_id'] + '"'
+ ');})'
+ '" style="cursor: pointer; cursor: hand; ">view details</a></p>'); // 1 initial load
}
}).addTo(this.map)//.on('click', this.onMarkerClick);
结果html是:
<a href="javascript:void(0);" onclick="window['angularComponentRef'].zone.run(() => {window['angularComponentRef'].component.showResultDtlViaMapTip("Upper Sioux Agency State Park","530","spk00277");})" style="cursor: pointer; cursor: hand;">view details</a>
关于这是区域语法错误还是我的嵌套引号有问题的任何想法。或者也许完全是别的东西?如有任何帮助,我将不胜感激。
箭头函数已在 ES2015 中引入,are not supported 在 Internet Explorer 中引入。
您的表达式看起来与普通 function
的使用兼容,因此只需将箭头函数替换为普通箭头函数即可解决语法错误,同时保留功能。
感谢您的修复建议。作为参考,这里是新的功能重写代码,不使用箭头函数:
<span onclick="window['angularComponentRef'].zone.run(function() {return window['angularComponentRef'].component.showResultDtlViaMapTip('Hill-Annex Mine State Park','210','spk00176')});">view details</span>
我们有一个带有嵌入式传单地图的 angular5 应用程序。该地图将弹出窗口绑定到各个点,这些点又打开了一个详细信息组件。这个复杂的过程在 chrome 和 firefox 中运行良好,但在 Internet Explorer 中因神秘的 "Syntax error" 而失败。您可以在以下位置查看该应用程序: http://ptappdev.gisdata.mn.gov/ptappt
单击任意地图标记,然后单击 "view details"。
如果 javascript 嵌套引号有问题,我已经尝试了各种转义模式。仍然没有运气。生成此弹出窗口的代码是:
layer.bindPopup('<p>' + feature.properties[Object.keys(feature.properties)[0]] + '<br /><a target="_blank" href="' + feature.properties['park_home_page_url']
+ '">open website</a><br /><a href="javascript:void(0);" '
+ 'OnClick = "'
//+ 'alert('test');'
+ 'window['angularComponentRef'].zone.run(() => {window['angularComponentRef'].component.showResultDtlViaMapTip('
+ '"' + feature.properties['name'] + '",'
+ '"' + feature.properties['id'] + '",'
+ '"' + feature.properties['park_admin_id'] + '"'
+ ');})'
+ '" style="cursor: pointer; cursor: hand; ">view details</a></p>'); // 1 initial load
}
}).addTo(this.map)//.on('click', this.onMarkerClick);
结果html是:
<a href="javascript:void(0);" onclick="window['angularComponentRef'].zone.run(() => {window['angularComponentRef'].component.showResultDtlViaMapTip("Upper Sioux Agency State Park","530","spk00277");})" style="cursor: pointer; cursor: hand;">view details</a>
关于这是区域语法错误还是我的嵌套引号有问题的任何想法。或者也许完全是别的东西?如有任何帮助,我将不胜感激。
箭头函数已在 ES2015 中引入,are not supported 在 Internet Explorer 中引入。
您的表达式看起来与普通 function
的使用兼容,因此只需将箭头函数替换为普通箭头函数即可解决语法错误,同时保留功能。
感谢您的修复建议。作为参考,这里是新的功能重写代码,不使用箭头函数:
<span onclick="window['angularComponentRef'].zone.run(function() {return window['angularComponentRef'].component.showResultDtlViaMapTip('Hill-Annex Mine State Park','210','spk00176')});">view details</span>