【发布时间】:2019-01-20 09:48:32
【问题描述】:
我想知道是否可以通过模板字符串表示法将函数绑定到 html 模板。
如果我这样做
let dynTamp = `<div> ${device.name} </div>`;
效果很好,但是这个
let dynTamp = `<button (click)="${someFunction}"></button>`;
不将函数绑定到点击事件。我在这里遗漏了什么吗?
背景:我正在使用 LeafletJs 并在地图上动态创建标记,其弹出框应包含按钮:
this.devices.forEach(device => {
L.marker([Number(device.map_x), Number(device.map_y)], {icon: this.icon})
.bindPopup(`<h2> ${device.name}</h2>
<button (click)="${doThis}"></button>
<button (click)="${doThat}"></button>`)
.addTo(this.map)
}
【问题讨论】:
-
是的。角度表达式不是模板字符串。这是一个 Angular 表达式。单击按钮时调用 someFunction() 的语法是
(click)="someFunction()"。并且需要编译 Angular 模板。你不能只是动态地生成包含 Angular 标记的 HTML 并希望它能正常工作。不会的。 -
当然,我们从 AngularJS 知道这一点。在我的第一个示例中,虽然它确实被编译了,但这就是为什么我想知道函数是否也有这样的方法
标签: angular leaflet template-strings