从django-tastypie获取骨干集合失败

时间:2012-11-13 11:06:02

标签: backbone.js render fetch tastypie

我正在使用来自https://github.com/PaulUithol/backbone-tastypie的backbone-tastypie,我无法获取收集数据。 那是我的代码:

var User = Backbone.Model.extend({
  url: '/api/v1/user'
});


var HoraExtra = Backbone.Model.extend({
  url: '/api/v1/horasextra/'
});


var HorasExtra = Backbone.Collection.extend({
  url: '/api/v1/horasextra/',
  model: HoraExtra
});

var Horas = new HorasExtra();

var activeUser = new User();

var HorasExtraView = Backbone.View.extend({

initialize: function() {
  _.bindAll(this, "render");
},

render: function() {
  var plantilla = Handlebars.compile($("#horas_extra_template").html());
  var html = plantilla(Horas);
  this.$el.html(html);
  console.log(JSON.stringify(Horas));
  }
});

var HorasExtraWidget = new HorasExtraView({el: $('#base')});

Horas.fetch({
 data: {
    "usuario__id": 2,
    "hor_com__month": 11
  }
});

HorasExtraWidget.render();

这是console.log的结果(JSON.stringify(Horas):

[]

非常感谢

2 个答案:

答案 0 :(得分:2)

我建议你在1-2天内服用tastypie,骨干并建立自己的简单项目。 然后,您将了解耦合这两个框架的基本问题。 没有这些知识,你尝试其他人的项目然后想知道“什么不起作用”是没有意义的。

根据我个人的经验,tastypie和javascript都非常简单,很容易结合。

我不是专家。

几点:尝试使用fetch显式获取模型,从成功回调中操作获取的模型,并观察模型URL,正斜杠等等。

好像你的收藏品是空的。

在控制台中查看是否有对服务器的GET调用。 如果没有,你实际上并没有从服务器上取任何东西。

答案 1 :(得分:0)

我使用了https://github.com/amccloud/backbone-tastypie然后你的代码应该是这样的,我想。未经测试。

var HorasCollection = Backbone.Tastypie.Collection.extend({
  url: '/api/v1/horasextra/'
});

var HorasExtraView = Backbone.View.extend({
    el: $('#base'),
    entries: new HorasCollection(),
    render: function() {
        var that = this;
        this.entries.fetch({
            success: function(entries){
                console.log("Entries", entries.models);
                // var t = _.template(template, {hello: 'world'});
                // that.$el.html(t);
            },
            error: function(model, response){
                console.log("Error", response);
            }
        });
    }
});

如果您正在尝试为数据创建表,请尝试我的jquery插件:) https://github.com/sspross/tastybackbonepie