所以我有这个问题。我正在尝试在 knockout.js 中创建一个谷歌地图搜索示例。我的视图模型如下:
function search() {
var self = this;
self.loc = ko.observable();
self.load = function () {
$.getJSON("http://ws.geonames.org/searchJSON?q=" + $('#q').val() + "&maxRows=10",self.loc);
self.centre = function (lat,lng){
var point = new GLatLng(lat,lng);
map.setCenter(point,13);
}
}
$(document).ready(function(){
ko.applyBindings(new search());
});
function center(lat,lng){
var point = new GLatLng(lat,lng);
map.setCenter(point,13);
}
视图如下:
<div data-bind="with: loc">
<div data-bind="foreach: geonames">
<a data-bind="text: name, attr: { 'data-lat': 'lat', 'data.lng': 'lng', 'href': 'javascript:center(lat,lng);' }"></a>
</div>
</div>
我面临的问题是未从获取的 JSON 中检索 lat 和 lng 字段。相反,它们按原样显示。例如,在生成的 html 源代码中,标签的 href 属性将包含 javascript:center(lat,lng) 而不是 lat lng 的数值。但是文本数据绑定字段中的“名称”项显示正确。
我猜问题在于将 key: value 对放在单引号中,但如果我删除它们,我会得到各种与 - in data-lat 属性或 . 在 data.lng 或:在 javascript:center(lat,lng); 标签 。任何帮助将非常感激。