2012-04-21 24 views
7

Tôi có một mô hình mang tên người:làm thế nào để truy cập vào một mô hình dữ liệu từ một cái nhìn trong backbone.js

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

Bây giờ tôi có một cái nhìn:

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

Tạo một đối tượng của quan điểm:

var obj = new person_view() 

Cố gắng tên truy cập:

obj.output() 

Nhưng tôi đã nhận lỗi này:

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

Bạn có thể chỉ cho tôi làm thế nào để làm những việc đúng tôi đã chỉ mới bắt đầu làm quen với backbone.js vì vậy hãy chịu với tôi?.

Trả lời

9

Bạn phải khởi tạo mẫu của bạn trước khi bạn có thể truy cập vào nó:

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

Thay vì đi qua các mô hình khi bạn extend xem, bạn sẽ muốn vượt qua nó khi bạn xây dựng một cái nhìn mới:

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

var obj = new person_view({ 
    model : new person() 
}); 
1

"person_view" của bạn không thể truy cập bất kỳ mô hình nào (được mong đợi bởi chế độ xem đó), vì không có mô hình nào được tạo, khi bạn khai báo "person_view" và gọi hàm của nó. Trước tiên hãy tạo mô hình rồi chuyển nó để xem khi khai báo "person_view" đó.

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