2

バックボーンビューには2つのメソッドがあります。1つは単純なAJAX呼び出しを実行し、もう1つは実行するコールバック関数です。コールバック関数をパラメーターとしてAJAXメソッドを呼び出したい。

call_ajax_function: =>
  @get_stuff(@my_callback)

get_stuff: (callback_function) =>
  $.ajax
    url:'get_something'
    success: =>
      callback_function

my_callback: =>
  console.log "hello"

しかし、「my_callback」が呼び出されているとは思いません。何か案は?

4

1 に答える 1

3

関数を呼び出す必要があります。変更してみてください

get_stuff: (callback_function) =>
  $.ajax
    url:'get_something'
    success: =>
      callback_function

get_stuff: (callback_function) ->
  $.ajax
    url:'get_something'
    success: (data) => #success takes arguments, pass them thru
      callback_function(data)

私はあなたがしているようにあなたが議論を渡す必要はないと思いget_stuffます。だから私はこれがうまくいくはずだと思います

get_stuff: ->
  $.ajax
    url:'get_something'
    success: (data) => 
      @callback_function(data)

さらに、コールバックのコンテキストがインスタンスになるという利点があります。つまり、コールバックの実行内で@正しいインスタンスになります。

callコールバックメソッドを動的に指定し、そのメソッドが実行されるスコープを指定する場合は、次のように使用する必要があります。

get_stuff: (onSuccess)->
      $.ajax
        url:'get_something'
        success: (data) => 
          onSuccess.call @, data

注意として、クラスでメソッドを定義するとき、私は=>あなたに何も買わない。->それらのメソッドに使用します。=>コンテキストを無名関数で調べたい場合に使用します。

于 2012-08-21T11:24:25.313 に答える