6

我有一个名为 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,所以请多多包涵。

4

3 回答 3

9

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

var person_view = Backbone.View.extend({
    initialize: function() {
        this.model = new person();
    },
    output: function(){
        console.log(this.model.get('names'))
    }
});
于 2012-04-21T07:00:12.923 回答
5

与其在查看视图时传递模型,不如extend在构建新视图时传递它:

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

var obj = new person_view({
  model : new person()
});
于 2012-04-21T06:59:25.040 回答
1

当您声明“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();
于 2014-07-24T09:02:04.920 回答