2013-08-12 15 views
5

Ho difficoltà a ottenere il campo determinato dell'oggetto padre dall'oggetto figlio utilizzando knockout.js.
Knockoutjs ottiene oggetto padre

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]); 



La gerarchia è principale ha diversi bambini. In oggetto Child voglio ottenere l'attributo dei suoi genitori ': fieldToGet.

+4

Passo 'Main' come un parametro (come' self') al costruttore di 'Child' –

+0

Qual è il problema in questo esempio? –

+0

@PWKad Il problema è che il mio esempio in realtà non funziona. – riceTale

risposta

4

Penso che una buona soluzione sarà quella di passare la classe genitore al figlio come parametro.

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]); 

Come si può vedere nel mio esempio all'istanza padre (self) verrà passato come parametro alla classe figlia nel costruttore (function Child(info, parent))

+0

Prima di tutto grazie per aver risposto alla mia domanda. Come ho già detto ho incontrato questo problema prima e ho risolto il problema come quello che hai fatto qui. Quindi vuol dire che non posso ottenere il campo dei genitori in una struttura come questa nel data-bind? per esempio. $ Parent.parentThing() – riceTale

Problemi correlati