当我搜索“ Knockout Google Maps ”时,我发现相当多的基于 KO 的 Google Maps 实现。我能够找到的所有这些都采用了使用自定义绑定处理程序的方法,而我最初打算将其实现为 Knockout 组件。
例子:
- http://www.codeproject.com/Articles/351298/KnockoutJS-and-Google-Maps-binding
- http://www.hoonzis.com/knockoutjs-and-google-maps-binding/
- https://github.com/manuel-guilbault/knockout.google.maps
谁能指出我正确的方向,为什么在这里更喜欢自定义绑定处理程序而不是 KO 组件?
我计划的用例是这样的:
我正在实现一个带有地址搜索结果列表的页面。到目前为止的列表是一个 KO 组件,每个列表条目由另一个 KO 组件生成,该列表组件在 foreach 绑定中重复调用该组件。在这个搜索结果列表旁边,我需要一个谷歌地图,在地图中也显示结果条目。列表、列表条目和地图之间也会有相当多的交互。
这是我到目前为止所得到的:
var GMap = function () {
var self = this;
var initMap = function() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: {lat: 51.4387974, lng: 6.9922915}
});
};
initMap();
};
$(document).ready(function() {
ko.components.register('gmap', {
viewModel: GMap,
template: { element: 'gmap' }
});
ko.applyBindings();
});
#map {
height: 400px;
width: 600px;
}
<script src="https://maps.googleapis.com/maps/api/js?v=3.22"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<gmap></gmap>
<template id="gmap">
<div id="map"></div>
</template>