【问题标题】:Using Backbone.Sync without specific model在没有特定模型的情况下使用 Backbone.Sync
【发布时间】:2011-12-19 00:04:10
【问题描述】:

(Rails 3 + 主干 0.53) 我在“/payments”网址上从我的 API 获取数据,它返回不同类型的支付数据。

所以用户可以删除,比如说一个信用卡条目,它会同步到服务器上

"/credit_cards".

问题是,如果我使用 Backbone.Sync 的语法

Backbone.Sync('delete', @options.credit_cards.get('id')) 

它给了我一个“必须指定一个“url”属性或函数”错误。

这作为模型是有意义的,例如:

@options.credit_cards.get('id') 

在这种情况下不存在,因为 credit_cards 不存储任何数据。我只想用 Backbone.sync 做一个标准的 DELETE á la

"/credit_cards/:id" 

但只需指定 id(我从 /payments 收到)而不是模型(但模型/集合具有 url...)

所以我的问题是:1.) 有没有一种方法可以在骨干网中使用backbone.sync,而无需将数据实际存储在集合/模型中,更像是使用jQuery 的简单ajax 请求。 示例:

Backbone.Sync('delete', "specify_a_url_here_with/#{id}"))

而不是混合使用 Backbone.Sync 和 $.ajax 请求。

2.) 这样做是否有意义或者是否有更好的选择。

非常感谢!我真的很喜欢!希望这个问题不要太奇怪。菲尔

【问题讨论】:

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


    【解决方案1】:

    您可以在“选项”中将“url”和“data”传递给Backbone.Sync。

    Backbone.sync(method, model, options) 返回一个 $.ajax(params) 其中 params.url 和 params.data 反映您的模型,除非您在选项中明确传递它们。

    所以

    Backbone.sync('delete', false, {url : "/credit_cards/1", data : ''}) 
    

    应该可以。

    【讨论】:

      【解决方案2】:

      当您尝试做一些似乎不适合默认 Backbone 行为的自定义操作时,我建议您覆盖模型中的 Sync() 函数或定义一个不同的函数定义您自己的 Ajax 调用。

      我倾向于认为 Backbone 模型函数是一组合理的默认值,可以在需要时被覆盖,而不是一组你必须接受的函数。

      斯科特

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多