【发布时间】:2017-04-06 06:48:22
【问题描述】:
我在 udacity 课程中使用了 knockoutJS,但我似乎无法更新我的 DOM 的一部分。
我正在与谷歌地图 API 进行交互。我有一个 observableArray,其中包含具有一些内容的位置对象以及一个包含 true 或 false 值的“显示”元素。 现在 observableArray 正在更新(它基于标记是否在可见地图的范围内)但它没有更新我的 DOM,它只应该列出可见位置的标记标题。
this.locations = ko.observableArray([{
title: 'Camden Brookwood',
location: {
lat: 33.8027355,
lng: -84.3973864
},
content: "Camden Brookwood, Rank: 1",
show: true
},
{
title: 'Monroe Place',
location: {
lat: 33.8092084,
lng: -84.370107
},
content: "Monroe Place, Rank: 2",
show: true
},
{
title: 'Capitol Gateway',
location: {
lat: 33.7453517,
lng: -84.384106
},
content: "Capitol Gateway, Rank: 3",
show: true
},
{
title: 'Gables 820 West',
location: {
lat: 33.7808463,
lng: -84.4162514
},
content: "Gables 820 West, Rank: 4",
show: true
},
{
title: 'Montage Embry Hills',
location: {
lat: 33.8827244,
lng: -84.2480548
},
content: "Montage Embry Hills, Rank: 5",
show: true
}
]);
这是更新这些值的内容
google.maps.event.addListener(map, 'tilesloaded', function() {
for(var i = 0; i < locations().length; i++) {
if(map.getBounds().contains(locations()[i].location))
locations()[i].show = true;
else {
locations()[i].show = false;
}
}
});
这是 DOM 相关部分的代码
<div data-bind="foreach: locations">
<div class="mini-container" data-bind="visible: show">
<div data-bind="text: show"></div>
</div>
</div>
我也尝试过使用“if”数据绑定。
【问题讨论】:
标签: javascript google-maps dom knockout.js