2012-06-06 4 views
6

Ich habe das folgende Problem in ember.js. Ein untergeordneter Controller hängt von einem ausgewählten Wert in einem übergeordneten Controller ab, um seinen Inhalt zu bestimmen. In der Datenbank hat ein Kind eine Eltern-ID-Referenz.Wie man den Inhalt eines ArrayControllers vom ausgewählten Wert eines anderen ArrayControllers in Ember.js aktualisiert

Ich würde dies lieber lösen, ohne dass der elternController etwas über die anderen Controller wissen muss. Dies sollte mit Beobachtern, Bindungen oder sogar durch Berechnungen möglich sein, aber ich habe keine Ahnung, wo ich anfangen soll. Jede Hilfe würde sehr geschätzt werden.

Antwort

6

Sie können das Bindungssystem verwenden. Die sonsController muss die parentsController.selected Eigenschaft beobachten und dann den Inhalt aktualisieren. Hier

ist ein Beispiel dafür, wie Sie das tun können:

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') 
}); 

Und here is the jsfiddle associated.

N.B. : Sie könnten auch die ausgewählte Eigenschaft direkt binden:

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

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

Vielen Dank !!! :) – codehugger

Verwandte Themen