Javascript 在谷歌地图信息窗口中使用knocko模板绑定
我正在尝试使用一个敲除模板,用一个点击事件来填充我的google地图标记信息窗口,以一种模式显示wiki文章。现在,我的标记是空白的,我没有收到任何错误。你知道我做错了什么吗 html代码段Javascript 在谷歌地图信息窗口中使用knocko模板绑定,javascript,templates,google-maps-api-3,knockout.js,Javascript,Templates,Google Maps Api 3,Knockout.js,我正在尝试使用一个敲除模板,用一个点击事件来填充我的google地图标记信息窗口,以一种模式显示wiki文章。现在,我的标记是空白的,我没有收到任何错误。你知道我做错了什么吗 html代码段 <script type="text/html" id="info-template"> <div data-bind="with: currentLocation"> <div id="m-title" data-bi
<script type="text/html" id="info-template">
<div data-bind="with: currentLocation">
<div id="m-title" data-bind="text: title"></div>
</div>
<button id="wiki-a" data-bind="click: toggleWiki">
Wikipedia Articles
</button>
<div id="pano"></div>
</script>
维基百科文章
js代码段
infowindow.setContent('<div id="info-window" data-bind="template:' +
'{ name: \'info-template\'}"></div>');
infowindow.setContent(“”);
完整代码在您不能直接在Google setContent方法中添加敲除Js模板,该方法特别需要一个字符串或html节点来呈现。 见 因此,您正在添加的内容将作为字符串或html节点添加。但在您的例子中,它似乎是字符串,因为您传递的敲除模板不是有效的DOM节点,将被视为常规字符串。这里的关键是首先呈现html,然后将其内容设置为infowindow 使用以下命令更新您的
infowindow.setContent
方法
infowindow.setContent(document.getElementById("info-template").innerHTML);
希望有帮助 这是将html放入信息窗口,但这是否阻止了模板中的数据绑定单击事件?您可以在setContent方法之后绑定事件
ko.applyBindings(,)
。这可能是一个愚蠢的问题,但我可以在setContent方法之后的下一行中设置它吗?我应该用我已有的ko.applyBindings方法在js文件的底部设置它吗?是的,你应该在setContent
之后调用该方法,因为你想在添加弹出窗口后立即设置click事件的绑定。在Js的底部添加将不起作用。只是一个建议,当我查看您的代码库时,您需要对代码进行重大重构。当我在寻找合适的上下文时,我无法为您修复它。让我知道它是否解决了您的问题。至于添加applyBindings方法,我不能有两个apply bindings方法。我自己也在努力解决这个问题。。。正在寻找一个不必重构整个代码库的修复方案。在此方面的任何帮助都是非常感谢的。