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')
      ...

我不太熟悉咖啡脚本/主干文件的结构,所以我不确定将 ajax 放在哪里。由于它引用了@orderId,我觉得它应该放在类的内部,但它会产生一些非常丑陋的javascript(而且,它现在似乎无法正常工作)。

编辑:请注意,我在链接中使用了@orderId 变量,所以我认为这个调用需要以某种方式在 OrderDetailsView 内(否则它无法知道@orderId 是什么,对吧?)。另外,我希望能够返回任意的 HTML 块——不需要使用结构化模型。

4

2 回答 2

1

您真的不需要直接进行 ajax 调用。创建一个集合并使用 fetch。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 回答