Ich versuche, eine modale Box-Komponente in Ember zu bauen. Die modale Box hat zwei Standardtasten, "Schließen" und "Speichern". Ich wollte Controller-Aktion an diese Komponente übergeben, so dass beim Klicken auf die Schaltfläche Speichern die Controller-Aktion aufgerufen wird, die übergeben wurde. Ich nenne meine Komponente wie:Binding-Controller-Objekt zu einer Komponente in Ember
{{#affi-modal-box title="Test title" modalId="createNewAnalyticsRunModal" controllerBinding=controller}}some message{{/affi-modal-box}}
und meine Komponente:
AS.AffiModalBoxComponent = Ember.Component.extend({
attributeBindings: ['modelId','test'],
//this is the function that gets called when save button is clicked
onSaveButtonClick : function(){
console.log(this.controllerFor('analysisTemplates'));//fails
console.log(this.get('controller'));//returns modal box component which I don't need
}
});
Irgendwelche Ideen, wie ich das Controller-Objekt an die Komponente übergeben kann ??
Danke.
Wenn Sie jedoch nur versuchen, eine Controller-Eigenschaft innerhalb einer Komponente zu aktualisieren, weisen Sie einfach den Wert dieser Eigenschaft innerhalb der Komponente neu zu, und die automatischen Bindungen, die eine Controller-Eigenschaft an eine Komponente übergeben haben, sorgen dafür die Updates, oder? Für einfache Änderungen der Controllereigenschaften müssen Sie diesen primären Aktionsmodus also nicht verwenden. Ist es mehr die Art und Weise, dies auch für einfache Eigentumsänderungen zu tun? – ahnbizcad
@ahnbizcad Wenn Sie die Komponente eng mit dem Controller verbinden möchten, können Sie auch eine Komponente nicht verwenden. Der Zweck von Komponenten ist die Entkopplung zur Wiederverwendbarkeit. Die Komponente wird also mit Aktionen erstellt, die als Hooks fungieren. Und abhängig davon, wo die Komponente eingefügt wird, können diese Aktionen verschiedene Controlleraktionen auslösen, um das zu tun, was in diesem Kontext am nützlichsten ist. Macht das Sinn? – Misterparker
@inuitivepixel Können Parameter mit dieser Lösung übergeben werden? – murli2308