Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何获取和填充GooglePlacesJSAPI的主干模型?_Backbone.js_Google Places Api - Fatal编程技术网

Backbone.js 如何获取和填充GooglePlacesJSAPI的主干模型?

Backbone.js 如何获取和填充GooglePlacesJSAPI的主干模型?,backbone.js,google-places-api,Backbone.js,Google Places Api,我正在实施一个需要访问的系统。项目的大部分时间我都在使用rails,但现在我想在我的一个视图中注入一点AJAX。基本上,它是一个显示位置附近位置的视图。为此,我使用了GooglePlaces的JSAPI。快速工作流程包括: 1-用户输入文本查询并点击enter键。 2-有一个AJAX调用从GooglePlacesAPI请求数据。 3-向用户展示成功的结果 问题主要出现在步骤2中。我想使用它,但当我创建主干模型时,它会请求“rootURL”。如果对位置的请求是从服务器完成的,那么这不会是一个问题,

我正在实施一个需要访问的系统。项目的大部分时间我都在使用rails,但现在我想在我的一个视图中注入一点AJAX。基本上,它是一个显示位置附近位置的视图。为此,我使用了GooglePlaces的JSAPI。快速工作流程包括:

1-用户输入文本查询并点击enter键。 2-有一个AJAX调用从GooglePlacesAPI请求数据。 3-向用户展示成功的结果

问题主要出现在步骤2中。我想使用它,但当我创建主干模型时,它会请求“rootURL”。如果对位置的请求是从服务器完成的,那么这不会是一个问题,但事实并非如此

地点呼叫是这样完成的:

service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);
传递回调函数:

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i

是否可以覆盖主干模型中的“fetch”方法,并用成功的位置结果填充模型?这是个坏主意吗?

可以覆盖主干模型的获取方法

var mapModel = Backbone.Model.extend({
    fetch: function (options) {
        // do your call to google places here
    },
    callBackFunctionForGoogleMaps: function (results, status) {
        // call back function here would set model properties
    }
});
return mapModel;
通过这种方式,您可以覆盖fetch并删除主干的默认行为以进行ajax调用

仅供参考,如果您希望覆盖主干模型获取,但仍具有model.fetch的默认行为,则可以执行以下操作。注意调用Backbone.Model.fetch的返回

var mapModel = Backbone.Model.extend({
    fetch: function (options) {
        // do any pre-fetch actions here
        return Backbone.Model.fetch.call(options);
    }
});
return mapModel;
在这里重写fetch方法可能不是一个坏主意,因为您仍然在为您的模型获取数据,而不是通过ajax调用。不过,明智的做法是留下注释,指出您以这种方式重写fetch是有原因的