获取通过敲除点击的输入值

时间:2017-06-18 02:33:18

标签: javascript jquery google-maps knockout.js

我是淘汰赛的新手,所以我想弄清楚如何使我的小应用程序正常工作。从本质上讲,我希望Google地图可以在点击时放大我的列表中的某个位置。谷歌地图部分正在运作。我创建了一个列表,我使用knockout foreach方法填写。然后,我已将项目的值绑定到我的函数,但它仍然抛出错误:

“knockout-3.4.2.js:1871 Uncaught ReferenceError:无法处理绑定”foreach:function(){return places}“ 消息:无法处理绑定“click:function(){return zoomToPlace}” 消息:zoomToPlace未定义“

这是我这部分的html:

<div class="scroll" id="myUL">
  <ul data-bind="foreach: places">
     <li>
       <input data-bind="value: title, click: zoomToPlace" type="button" class="btn btn-small btn-link">
     </li>
  </ul>
</div>

这是我的js:

function PlacesList() {
var self = this;
self.places = ko.observableArray(locations);
self.title = ko.observable();
self.zoomToPlace = function() {
    // Initialize the geocoder.
    var geocoder = new google.maps.Geocoder();
    // Get the place.
    var address = this.title();
    // Geocode the address/area entered to get the center. Then, center the map on it and zoom in
    geocoder.geocode({
        address: address,
        componentRestrictions: {
            locality: 'North York'
        }
    }, function(results, status) {
        map.setCenter(results[0].geometry.location);
        map.setZoom(15);
    });
}
}

ko.applyBindings(new PlacesList(), document.getElementById("myUL"));

谢谢,您的意见将不胜感激!

1 个答案:

答案 0 :(得分:0)

zoomToPlace更改为$parent.zoomToPlace

forEach循环内,上下文是当前的places项。由于zoomToPlace不是places中项目的方法,因此您收到错误。