骨干视图不适用于this.model.toJSON()

时间:2017-03-06 19:38:08

标签: javascript backbone.js

我已经在我的骨干代码上实现了一个视图,尝试在我的模型上添加数据之前显示所有修改。但由于某种原因,我的视图返回" this.model.toJSON()不是函数"我一直尝试从我的表单添加一些东西。我没有理解错误。

它会在视图中出现" userView"渲染()。按照我的2个观点,模型和集合。

模型:

      var userModel = Backbone.Model.extend({
          defaults: function() {
            return {
              nome: '',
              sobrenome: ''
            };
          }
      });

视图:

         var userView = Backbone.View.extend({
            model: new userModel(),
            tagName : 'div',
            initialize: function(){
              this.template = _.template($("#user-template").html());
            },
            render : function() {
               this.$el.html(this.template(this.model.toJSON()));
               return this;
            }
         });

观点2:

        var userViewes = Backbone.View.extend({
            model: users,
            el: $("#user-container"),
            initialize: function(){
              this.model.on("add", this.render, this);
            },
            render: function() {
              var self = this;
              self.$el.html("");
              _.each(this.model.toArray(), function(user, i){
                self.$el.append((new userView({model:  userModel })).render().$el);
              });

              return this;
            }
         });

最后,我的收藏:

        var userCollections = Backbone.Collection.extend({
          model: userModel
        });
抱歉有任何错误。

1 个答案:

答案 0 :(得分:1)

问题是您将未初始化的模型传递给视图。而不是userModel,传递user

_.each(this.model.toArray(), function(user, i){
    self.$el.append((new userView({model:  user })).render().$el);
});

此外,您不需要执行this.model.toArray(),而是可以执行此操作:

this.model.each(function(user, i){
    self.$el.append((new userView({model:  user })).render().$el);
});
  

我亲自打电话给我的收藏集collection而不是model