【问题标题】:How to incorporate ajax into coffescript/backbone.js script?如何将 ajax 合并到 coffescript/backbone.js 脚本中?
【发布时间】:2012-07-16 23:01:34
【问题描述】:

我有一个 ajax 的 sn-p 可以异步加载一些数据:

$(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 块——不需要使用结构化模型。

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 你能详细说明一下这是什么意思吗?
    • 抱歉,我遇到了一些事情。我给了你更多信息:)
    • 我不确定这是不是正确的方法,因为我想渲染任意一段 html,不一定是模型。此外,url 必须类似于“splunk/@orderId”,其中@orderId 由视图填充——这是否合法?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多