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 に答える