0

ハンドルバー テンプレートを使用しており、ヘルパーの登録に成功しました。ただし、 $.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] が表示されており、関数をオブジェクトとして表示しているためです。コールバックの結果が返されるようにしたい、またはコールバックが呼び出されるようにしたい

4

1 に答える 1

0

手がかりはURLの最後にあります:'&jsonp=?'。これは、JSONクロスドメインを使用する方法であるJSONPの使用を示しています。したがって、代わりに次の$.getJSONようなものを使用する必要があります。

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

URLのを削除し、'&jsonp=?'jQueryに処理させます。

于 2012-09-09T03:14:44.920 に答える