在Handlebars Helper中使用功能

时间:2012-09-09 00:32:18

标签: javascript jquery coffeescript bing-maps handlebars.js

我正在使用把手模板并成功注册了帮助器。但是,我想要一个$ .getJSON并从模板中显示的ajax请求中获得一些结果。

这是我的javascript代码(用咖啡写的)

      Handlebars.registerHelper('getNearestAddressFromPoint',(lat,lon) ->
    console.log("in register helper")
    bingURL = 'http://dev.virtualearth.net/REST/v1/Locations/' + lat + ','+ lon + '?&key=' + bingMapsKey + '&jsonp=?'
    $.getJSON(bingURL,@pointSuccess))


  pointSuccess:(data)=>
    tooltipAddr = $(@el).find("#tooltipAddr")
    address = data.resourceSets[0].resources.name
    $(tooltipAddr).text(address)
    console.log("hello")

这个jquery.text没有被运行,也没有console.log,但是正在记录“in register helper”。

这可能是因为帮助器将$ .getJSON作为函数返回,因为在我的模板中显示了[object Object]并且它将该函数显示为对象。我想要它,以便返回回调的结果,或者调用回调

1 个答案:

答案 0 :(得分:0)

线索位于网址的末尾:'&jsonp=?'。这表明使用JSONP,这是一种使用JSON跨域的方式。因此,除了$.getJSON之外,您还必须使用以下内容:

$.ajax({
    url: bingURL,
    dataType: 'jsonp',
    jsonp: "jsonp",
    success: @pointSuccess
});

删除网址上的'&jsonp=?',让jQuery处理它。