如何将ajax合并到coffeescript / backbone.js脚本中?

时间:2012-07-17 23:43:35

标签: ruby-on-rails ajax backbone.js coffeescript

我有一段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 - 无需使用结构化模型。

2 个答案:

答案 0 :(得分:1)

你不应该真的需要直接进行ajax调用。创建一个集合并使用fetch。 Backbone很擅长为你抽象ajax调用。

类似的东西:

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

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

或者只是设置模型的网址并获取它:

@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

答案 1 :(得分:0)

在我的情况下,由于我不需要请求的特定结构,因此AJAX调用可以放在文件的顶部(它根本不会干扰骨干代码)。