2012-04-21 11 views
7

Mam modelu nazwie osobę:Jak uzyskać dostęp do modeli danych z widokiem na backbone.js

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

Teraz mam widok:

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

Utworzony obiekt widoku:

var obj = new person_view() 

Spróbuj nazw dostępu:

obj.output() 

Ale mam ten błąd:

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

Czy możesz mi pokazać jak to zrobić rzeczy właściwie mam tylko właśnie rozpoczęła poznawanie backbone.js więc proszę nosić ze mną?.

Odpowiedz

9

Trzeba zainicjować swój model przed można do niego dostęp:

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

Zamiast przechodzącą modelu podczas extend pogląd, będziemy chcieli, aby przekazać ją podczas konstruowania nowego widoku:

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

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

Twoja "person_view" nie może uzyskać dostępu do żadnego modelu (który jest oczekiwany przez ten widok), ponieważ nie jest jeszcze utworzony żaden model, kiedy deklarujesz "person_view" i wywołujesz jego funkcję. Najpierw wykonaj model, a następnie przekaż go, aby wyświetlić, gdy zadeklarujesz "person_view".

var model_person_for_view= new person(); 
var obj = new person_view(model:model_person_for_view); 
obj.output(); 
Powiązane problemy