0

一部のデータを非同期的にロードする ajax のスニペットがあります。

$(document).ready ->
  $.ajax '/splunk/@orderId',
  type: 'GET'
  success: html ->
    $('#splunk_results').append html

私はそれをcoffeescript/backbone.jsファイルに入れています:

define dependencies, (template, ...) ->
  OrderDetailsView = Backbone.View.extend
    className: 'expanded_order'

    initialize: ->
      @orderId = @model.get('order_number')
      ...

私は coffeescript/backbone ファイルの構造にあまり詳しくないので、ajax をどこに置くべきかわかりません。それは @orderId を参照するので、クラス内に入れるべきだと思いますが、本当に醜い JavaScript を作成します (そして、現在どちらの方法でも機能していないようです)。

編集: リンクで @orderId 変数を使用していることに注意してください。そのため、この呼び出しは何らかの形で OrderDetailsView 内にある必要があると思います (そうしないと、@orderId が何であるかを知る方法がありませんよね?)。また、HTML の任意のチャンクを返すことができるようにしたいと考えています。構造化モデルを使用する必要はありません。

4

2 に答える 2

1

その ajax 呼び出しを直接行う必要はありません。コレクションを作成し、フェッチを使用します。Backbone は ajax 呼び出しの抽象化に優れています。

何かのようなもの:

SplunkCollection = Backbone.Collection.extend 
  url: 'splunk/'

splunkcollection = new SplunkCollection
splunkcollection.fetch()
...

または、モデルの URL を設定してフェッチするだけかもしれません。

@model.url = '/something' //set this somewhere in your model class
@model.fetch()

http://documentcloud.github.com/backbone/#Model-fetch
http://documentcloud.github.com/backbone/#Collection-fetch

于 2012-07-17T23:59:08.970 に答える
0

私の状況では、リクエストに特定の構造は必要なかったので、AJAX 呼び出しをファイルの先頭に配置するだけで済みました (バックボーン コードにはまったく干渉しません)。

于 2012-07-19T21:18:19.297 に答える