我试图将当前对象作为参数传递给我的视图模型中的方法,但由于某种原因,我不断收到错误,提示该对象未定义。
我正在为Udacity前端Web开发纳米学位制作一个邻居地图项目。我们的想法是使用谷歌地图api来显示城市,并使用各种位置的标记填充该地图,以及拥有所有位置的可过滤列表。可过滤列表中的位置应该是可点击的,并且会在与所点击位置相对应的地图标记上执行某些操作。
我的问题是,当我点击列表中的某个位置时,我收到以下错误:
未捕获的TypeError:无法读取未定义的属性“infowindow” _____ self.openInfoWindow @ app.js:95
_____(匿名函数)@ knockout-3.1.0.js:67
Here is a link to my project in Github.
以下是相关的代码片段,供快速参考:
在HTML中:
<tbody data-bind="foreach: {data: filterPoints, as: 'point'}">
<tr>
<td>
<a href="#" data-bind="text: name, click: $parent.openInfoWindow"></a>
</td>
</tr>
</tbody>
在JS文件中:
//create filter function so user can narrow the number of points in the list and on the map
self.filterPoints = ko.computed(function() {
var search = self.query().toLowerCase();
return ko.utils.arrayFilter(self.points(), function(point) {
var doesMatch = point.name().toLowerCase().indexOf(search) >= 0;
point.isVisible(doesMatch);
return doesMatch;
});
});
//create Google Maps infowindows for each point on the map
self.openInfoWindow = function(point) {
self.point.infowindow.open(map, point.marker);
console.log(point);
};
提前感谢任何可以帮助我的人!
答案 0 :(得分:0)
在你的GitHub仓库中你有一个self.points可观察数组,但是没有self.point字段或者observable。我怀疑你的意思
point.infowindow.open(map, point.marker);
console.log(point);
(不是&#34;自我。&#34;在点前)
另外,你的&#34;点&#34;班级没有暴露信息。您需要在https://github.com/Caoimhin89/Udacity_Project_5/blob/master/app.js#L21
上进行此操作而不是var infowindow。