2017-07-24 20 views
0

Hat jemand von euch dies mit dem Ember-Pikaday-Addon erfahren? Ich möchte das Datum von onSelection auf selectedDate gespeichert werden, aber der Kontext innerhalb der onSelection ist das Addon und nicht der Komponente selbst. Gibt es eine Möglichkeit, den Wert von date in einer der Eigenschaften in meiner Komponente zu speichern?Zugriff auf das Datum in Ember-Pikaday OnSelection von außen

Mein Code ist wie folgt:

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    classNames: ['schedule-nav-date-picker'], 
    selectedDate: null, 

    onSelection: function(date) { 
    this.set('selectedDate', date); 
    return date; 
    }, 

    actions: { 
    saveClicked() { 
     this.sendAction('saveClicked', this.get('selectedDate')); 
    }, 

    cancelClicked() { 
     this.sendAction('cancelClicked'); 
    } 

    } 
}); 

Und es gibt mir diese Fehlermeldung:

pikaday.js:165 Uncaught TypeError: this.get(...) is not a function 
at Class.userSelectedDate (pikaday.js:165) 
at Class.onPikadaySelect (pikaday.js:151) 
at Backburner.run (ember.debug.js:224) 
at Backburner.join (ember.debug.js:247) 
at Function.run.join (ember.debug.js:15904) 
at Pikaday.<anonymous> (ember.debug.js:15966) 
at Pikaday.setDate (pikaday.js:815) 
at HTMLDivElement.Pikaday.self._onMouseDown (pikaday.js:462) 

Und das ist die Vorlage, (wir Emblem für Templat verwenden):

h1 Select a Date 
.form-groups-container.-include-container 
    .form-section 
    .form-group 
     .row 
     pikaday-inputless onSelection=onSelection 

form-buttons [ 
    saveLabel='Save' 
    cancelLabel='Cancel' 
    saveClicked='saveClicked' 
    cancelClicked='cancelClicked' ] 
+0

Wie enthalten Sie es in HBs ?. From read me from addon, '{{pikaday-input onSelection = (Aktion 'setSelectedDate')}}' und Sie können 'setSelectedDate' in Ihrer Komponente definieren. – kumkanillam

+0

Bitte aktualisieren Sie es in Frage, die für andere nützlich sein wird, finden Sie Problem – kumkanillam

+0

@ kumkanillam ja, ich habe bereits die Frage aktualisiert. – Menardo

Antwort

1

Einer der wichtigsten Vorteile der Verwendung von action Helfer ist, dass es automatisch vorbereitet this Kontext für Sie; wenn du es benutzt. Zum Beispiel, wenn Sie die Funktion onSelection ohne die Aktion Helfer wie {{pikaday-inputless onSelection=onSelection}} übergeben, dann wird "dieser Kontext" die Komponente pikaday-inputless nicht Ihre eigene Komponente (übergeordnete Komponente) innerhalb der Handler-Funktion onSelection sein. Dies ist, was Kumkanillam bereits in diesem Kommentar erwähnt. Sie müssen also pikaday-inputless onSelection=(action 'onSelection') für "diesen Kontext" als Ihre eigene Komponente verwenden.

Ich habe eine sehr einfache twiddle für Sie vorbereitet, um zu veranschaulichen, dass die Verwendung von Aktion Helfer reibungslos funktioniert. Sie müssen nur Ihre Action-Handler innerhalb actions JSON Deklaration Ihrer Komponente setzen. Check out my-component in der Twiddle. Es macht einfach das, was ich oben schon zusammengefasst habe. Hoffe das hilft.

+0

Weißt du, wenn ist es möglich, das ausgewählte Datum im Picker zu behalten? – Menardo

+0

soweit ich weiß; Das kannst du nicht tun; 'pikaday' beruht auf Handlungen; Sie können nicht direkt an den ausgewählten Datumswert binden. aber das ist es wieder, was ich weiß; Ich könnte falsch liegen. – alptugd

Verwandte Themen