【问题标题】:how to access a models data from a view in backbone.js如何从backbone.js中的视图访问模型数据
【发布时间】:2012-04-21 06:56:50
【问题描述】:

我有一个名为 person 的模型:

 var person = Backbone.Model.extend({
      initialize: function(){
        console.log('cool');
      },
      defaults:{
          names:['a','k','d','s','h','t']
      }
    })

现在我有一个看法:

var person_view = Backbone.View.extend({
   model : person,
   output: function(){
      console.log(this.model.get('names'))
   }
});

创建了一个视图对象:

var obj = new person_view()

尝试访问名称:

obj.output()

但是我收到了这个错误:

TypeError: Object function (){ parent.apply(this, arguments); } has no method 'get'

你能告诉我如何正确地做事吗?我才刚刚开始了解backbone.js,所以请多多包涵。

【问题讨论】:

    标签: backbone.js backbone-views backbone-model


    【解决方案1】:

    您必须先初始化您的模型,然后才能访问它:

    var person_view = Backbone.View.extend({
        initialize: function() {
            this.model = new person();
        },
        output: function(){
            console.log(this.model.get('names'))
        }
    });
    

    【讨论】:

      【解决方案2】:

      不要在extend 视图时传递模型,而是在构造新视图时传递它:

      var person_view = Backbone.View.extend({
        output: function(){
          console.log(this.model.get('names'))
        }
      });
      
      var obj = new person_view({
        model : new person()
      });
      

      【讨论】:

        【解决方案3】:

        当您声明“person_view”并调用其函数时,您的“person_view”无法访问任何模型(该视图所期望的),因为尚未创建模型。 首先制作一个模型,然后在声明“person_view”时将其传递给视图。

        var model_person_for_view= new person();
        var obj = new person_view(model:model_person_for_view);
        obj.output();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-19
          • 1970-01-01
          • 2013-10-24
          • 2021-09-24
          • 1970-01-01
          • 1970-01-01
          • 2016-08-11
          • 2013-09-10
          相关资源
          最近更新 更多