2013-08-12 41 views
5

Tôi gặp khó khăn trong việc nhận trường nhất định của đối tượng mẹ từ đối tượng con bằng cách sử dụng knockout.js.
Knockoutjs nhận đối tượng cha mẹ

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



Các hệ thống phân cấp là chính có một số trẻ em. Trong đối tượng Child, tôi muốn lấy thuộc tính của cha mẹ nó: fieldToGet.

+4

đèo 'Main' như một tham số (như' self') cho hàm tạo của 'Child' –

+0

Vấn đề trong ví dụ này là gì? –

+0

@PWKad Vấn đề là ví dụ của tôi không thực sự hoạt động. – riceTale

Trả lời

4

Tôi nghĩ một giải pháp tốt sẽ là chuyển lớp cha mẹ cho con làm tham số.

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

Như bạn có thể thấy trong ví dụ của tôi trường hợp cha mẹ (self) sẽ được thông qua như là tham số cho lớp trẻ trong các nhà xây dựng (function Child(info, parent))

+0

Trước hết cảm ơn bạn đã trả lời câu hỏi của tôi. Như tôi đã đề cập, tôi đã gặp vấn đề này trước đây và tôi đã giải quyết được vấn đề giống như những gì bạn đã làm ở đây. Vì vậy, nó có nghĩa là tôi không thể có được lĩnh vực của cha mẹ trong cấu trúc giống như nó trong dữ liệu-ràng buộc? ví dụ. $ parent.parentThing() – riceTale

Các vấn đề liên quan