2017-07-17 3 views
0

Was ist die korrekte Art, eine bs-button innerhalb einer bs-form mit einer Komponentenaktion zu verbinden?Verbinden von bs-buttons in einer bs-Form mit Komponentenaktionen (ember-bootstrap)


Einige Hintergrundinformationen auf das, was ich tun möchte, und haben bereits versucht:

ich dabei bin Ember ein Upgrade 2,10-2,14 und glut-Bootstrap von 0.11.3 bis 1,0. Ich habe ein Problem mit Ember-Bootstrap festgestellt.

Ich habe zwei Schaltflächen in einem Formular (bs-form): "Speichern" und "Abbrechen". Das Formular wird in einer Ember-Komponente gehostet. In der alten Version hatte zwei bs-button Elemente I, wie folgt aus:

{{bs-button defaultText="Save" type="primary" action="save"}} 
{{bs-button defaultText="Cancel" type="primary" action="cancel"}} 

in der Komponentenklasse, definiert ich die passende Aktion:

actions: { 
    save() { /* do saving stuff */ } 
    cancel() { /* do cancelling stuff */ } 
} 

Nun ist diese nicht mehr funktioniert: bs-button verwendet onClick statt action jetzt, aber nur onClick="save" hinzufügen funktioniert nicht (ich bekomme TypeError: action is not a function); auch onClick=(action "save") funktioniert nicht (Assertion Failed: An action named 'save' was not found in (generated edit-organization controller)).

Wenn jedoch nicht bs-button aber ein normales button Element in Verbindung mit dem Helfer action verwenden, es funktioniert gut:

<button class="btn btn-default" {{action 'cancel'}}>Cancel</button> 
<button class="btn btn-primary" {{action 'save'}}>Save</button> 

Ich vermute, dass das Problem mit einer Komponente zusammenhängt die Form Gastgeber ; Immerhin gibt die Ember-Bootstrap-Dokumentation an, dass Aktionen verwendet werden ...

senden Sie eine Aktion an Ihren Controller.

Noch möchte ich eine Komponente verwenden (schließlich gehen Controller weg, oder?). Jede Hilfe dazu ist willkommen.

Antwort

0

Sie können Abschlussaktion erstellen und an die bs-button-Komponente übergeben.

{{bs-button defaultText="Save" type="primary" save=(action "save")}} 
{{bs-button defaultText="Cancel" type="primary" cancel=(action "cancel")}} 

Innerhalb der Komponente,

<button class="btn btn-default" {{action cancel}}>Cancel</button> 
<button class="btn btn-primary" {{action save}}>Save</button> 
+0

Wenn ich es richtig, Ihre Erklärung zu verstehen ist, wie die bs-Button-Komponente zu beheben. Aber bs-button ist nicht meine Komponente, aber es ist Teil des Ember-Bootstrap-Addons; Also, was ich suche, ist, wie man dieses Addon richtig benutzt, nicht, wie man die Funktionalität selbst schreibt. –

+0

Oh Entschuldigung. Jetzt habe ich dein Problem verstanden. Ich glaube, dass Sie Action definieren müssen ist Controller, das ist die bahnbrechende Änderung in [1.0.0 Alpha Releases] eingeführt (https://github.com/kaliber5/ember-bootstrap/blob/master/CHANGELOG.md#100-alpha3- 2017-01-21). Um das DDAU-Prinzip einzuhalten. Ich habe das nicht benutzt. Sie können dies von Autor @simonihmig, die in Ember Slack Community aktiv sein wird bestätigen – kumkanillam

+0

Ok thx, ich werde es versuchen! –

Verwandte Themen