2012-06-06 16 views
6

में किसी अन्य ArrayController के चयनित मान से एक ArrayController की सामग्री को अद्यतन करने के लिए कैसे करें Iber.js में निम्न समस्या है। एक बाल नियंत्रक अपनी सामग्री निर्धारित करने के लिए एक मूल नियंत्रक में चयनित मान पर निर्भर करता है। डेटाबेस में एक बच्चे के पास parent_id संदर्भ होता है।Ember.js

App.parentsController = Em.ArrayController.create({ 
    content: [], 
    selected: null 
}); 

App.sonsController = Em.ArrayController.create({ 
    // the value of content depends on the id of 
    // the selected item in the parentsController 
    content: [], 
    selected: null 
}); 

App.daughtersController = Em.ArrayController.create({ 
    // the value of content depends on the id of 
    // the selected item in the parentsController 
    content: [], 
    selected: null 
}); 

मैं माता-पिता के बिना इसे हल करना पसंद करूंगा नियंत्रक को अन्य नियंत्रकों के बारे में कुछ भी पता होना चाहिए। यह पर्यवेक्षकों, बाइंडिंग या यहां तक ​​कि गणनाओं के माध्यम से भी संभव होना चाहिए, लेकिन मुझे कोई संकेत नहीं है कि कहां से शुरू किया जाए। किसी भी मदद की सराहना की जाएगी।

उत्तर

6

आप बाध्यकारी प्रणाली का उपयोग कर सकते हैं। sonsController को parentsController.selected संपत्ति का निरीक्षण करने की आवश्यकता है, और उसके बाद अपनी सामग्री को अद्यतन करें।

App.parentsController = Em.ArrayController.create({ 
    content: [], 
    selected: null 
}); 

App.sonsController = Em.ArrayController.create({ 
    parentControllerBinding: 'App.parentsController', 
    content: [], 

    updateContent: function() { 
     var selected = this.getPath('parentController.selected'); 
     var newContent = Ember.A(); 
     newContent.pushObject(selected); 
     this.set('content', newContent); 
    }.observes('parentController.selected') 
}); 

और here is the jsfiddle associated:

यहाँ आप ऐसा कर सकते हैं कि कैसे का एक उदाहरण है।

एनबी। : आप सीधे चयनित संपत्ति को भी बांध सकते हैं:

App.sonsController = Em.ArrayController.create({ 
    parentSelectedBinding: 'App.parentsController.selected', 
     ... 

    updateContent: function() { 
     ... 
    }.observes('parentSelected') 
}) 
+1

आपको बहुत धन्यवाद !!! :) – codehugger