【问题标题】:Create model instance from non-JSON server response in Backbone.js从 Backbone.js 中的非 JSON 服务器响应创建模型实例
【发布时间】:2013-04-11 23:16:53
【问题描述】:

我有一个带有关联视图的规范模型:

var Item = Backbone.Model.extend({
  url: function() {
    return "/item/123"
  }
});
var ItemView = Backbone.View.extend({});

但是,在服务器端,在 url "/item/123" 处,我的 Django 应用程序不呈现 JSON 格式的内容,而是设计为直接插入到主页中的 HTML 模板。如何在不大幅改变服务器提供动态内容的方式的情况下渲染模型?有没有可能,或者我误解了 Backbone.js 背后的整个哲学?

只是给你一点背景:我正在通过集成 Backbone.js 重构 Django Web 应用程序的 JS 代码。该应用程序本身并不是很大,但它大量使用了 Ajax 调用。

【问题讨论】:

    标签: javascript ajax django backbone.js


    【解决方案1】:

    我认为您不应该在 model 中加载模板。模板的加载和渲染通常是view 的工作。尝试在 viewrender 方法中使用 AJAX 直接加载 HTML:

     var ItemView = Backbone.View.extend({
      render: function(){
        var that = this;
        $.get('/item/123', function(html){
          that.$el.html(html);
        });
        return this;
      }
    });
    

    【讨论】:

    • 我意识到这个解决方案对于 Backbone.js 来说并不完美,但是开始重构过程会很完美。
    【解决方案2】:

    如果您还没有,请查看 django-app Tastypie,它是后端到主干和类似应用程序的首选解决方案。

    如果不查看代码,很难判断将其全部转移到 Tastypie 中与基于每个案例滚动您自己的解决方案需要做多少工作,请查看文档。

    【讨论】:

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