javascript - 定义一个使用 Javascript 的自定义标签,向它发送一些参数
问题描述
我是我的前用户,JSF 2
我非常喜欢它的复合材料,这让我可以避免大部分时间都javascript
在我的 html 页面中。但是那个时代JSF 2
已经结束了……
我现在正在使用Spring Boot 2
and Thymeleaf
,而且Thymeleaf
我是第一次使用它。
我有Openlayers
一个显示地图的简单示例(提供了一些<script src=...>
此处未显示的附加声明Openlayers
,当然还有其他几个 html 标签;它直接来自http://openlayers.org/en/latest/doc/quickstart.html ) :
<div id="map" class="map"></div>
<script type="text/javascript">
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat([37.41, 8.82]),
zoom: 4
})
});
</script>
我想找到一种方式,我的 html 页面有一个自定义标签,例如:
<myMaps:display target="map" longitude=37.41 latitude=8.82 zoom=4 />
这将至少生成<script>
样本的一部分,并且充其量也收集<div>
它上面的标签。
我可以这样做Thymeleaf
吗?
问候,
解决方案
我不知道 Thymeleaf 支持自定义标签,但您可以使用带有JavaScript 内联的参数化片段,例如
<th:block th:fragment="myMaps(target, longitude, latitude, zoom)">
<div th:id="${target}" class="map"></div>
<script th:inline="javascript">
var map = new ol.Map({
target: [[${target}]],
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat([
[[${longitude}]],
[[${latitude}]]
]),
zoom: [[${zoom}]]
})
});
</script>
</th:block>
并通过
<div th:replace="::myMaps ('map', 37.41, 8.82, 4)"></div>
或者
<div th:replace="::myMaps (target='map',longitude=37.41,latitude=8.82,zoom=4)"></div>
推荐阅读
- python-3.x - 将带空格的路径名传递给命令行
- php - Laravel 5.6 将日期时间保存到数据库
- c++ - 为什么 Stroustup 书中的 has_f 不起作用?
- javascript - 谷歌地图上每个geojson的多个信息窗口
- java - 如何避免 IntelliJ 重置语言级别?
- php - 如何查看数据库中是否已经存在随机数?
- dask - dask 集群不使用所有核心
- json - Angular Material 表仅按最后一列排序
- c# - 在.net 中不使用 Response.Redirect(url) 的情况下重定向到自定义页面?
- html - 无法在 Shiny App 中放置徽标/图像