我使用knockoutJS作为我的udacity课程,而且我似乎无法更新我的DOM的一部分。KnockoutJS不更新dom - 与Googlemaps api交互
我正在与google maps API进行交互。我有一个observableArray,其中包含具有一些内容的位置的对象以及包含值true或false的“show”元素。 现在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>
我也试过代码绑定。
哦,不,这不是我想要做的事。 我有一个列表的左侧我想在列表中显示标记位置的名称。 –