2013-08-12 17 views
5

Mam trudności z uzyskaniem pola określonego obiektu nadrzędnego z obiektu podrzędnego za pomocą pliku knockout.js.
Knockoutjs dostaje obiekt nadrzędny

function Child(info){ 
    var self = this; 
    self.x = info.x; 
    self.y = info.y; 
    self.parentThing = parent.fieldToGet(); // This is when I had problem 
} 

function Main() { 
    var self = this; 
    self.fieldToGet = ko.observable(); 
      self.things = ko.observableArray(); 
    self.postFunction = function(){ 
     $.post('XXX.php', $("form#filterForm").serialize(), function(data){ 
       var mappedThing = $.map(data.data, function(info){return new Child(info); }); 
       self.things(mappedThing); 
      } 
     }, 'json'); 
    }; 
} 
var main = new Main(); 
ko.applyBindings(main, $("div#main")[0]); 



hierarchia jest główna posiada kilka dziecka. W obiekcie potomnym chcę uzyskać atrybut jego rodziców ": fieldToGet.

+4

Przełęcz 'Main' jako parametr (jak' self') do konstruktora 'Child'a –

+0

Jaki jest problem w tym przykładzie? –

+0

@PWKad Problem jest mój przykład nie działa. – riceTale

Odpowiedz

4

Myślę, że dobrym rozwiązaniem będzie przekazanie klasy nadrzędnej dziecku jako parametrowi.

function Child(info, parent){ 
    var self = this; 
    self.parent = parent; 
    self.x = info.x; 
    self.y = info.y; 
    self.parentThing = parent.fieldToGet(); // This is when I had problem 
} 


function Main() { 
    var self = this; 
    self.fieldToGet = ko.observable(); 
    self.things = ko.observableArray(); 
    self.postFunction = function() 
    { 
     $.post('XXX.php', $("form#filterForm").serialize(), function(data) { 
       var mappedThing = $.map(data.data, function(info) { 
       return new Child(info, self);   
       }); 
       self.things(mappedThing); 
     }, 'json'); 
    }; 
} 
    var main = new Main(); 
    ko.applyBindings(main, $("div#main")[0]); 

Jak widać na moim przykładzie instancję nadrzędną (self) zostanie przekazany jako parametr do klasy dzieci w konstruktorze (function Child(info, parent))

+0

Przede wszystkim dziękuję za odpowiedź na moje pytanie. Jak już wspomniałem, spotkałem się z tym problemem wcześniej i rozwiązałem ten problem, tak jak to, co tu zrobiliście. Czy oznacza to, że nie mogę uzyskać struktury nadrzędnej w strukturze takiej jak w powiązaniu danych? na przykład $ parent.parentThing() – riceTale

Powiązane problemy