Ich mache eine dynamische Liste von Daten. Der Benutzer kann alle datepickers hinzufügen, die er will, aber ich muss bestätigen, dass es keine übereinstimmenden Daten gibt, alle von ihnen müssen unterschiedlich sein, das ist die einzige Voraussetzung.Angular mehrere Direktiven Fehler auf MD-Datepicker
Ich habe eine benutzerdefinierte Direktive Validierung und es wird korrekt ausgelöst, aber wenn ich versuche, seine isolieren Bereich zu verwenden, bekomme ich nur diesen Fehler (Multiple Direktiven). Andere Fragen/Lösungen, die ich hier gesehen habe, schlagen vor, den Isolate-Bereich zu löschen, aber ich brauche ihn, um das Array von Daten an die Direktive zu übergeben und sie mit dem aktuell ausgewählten zu vergleichen.
Hier ist eine codepen, die das Problem reproduziert. Wenn Sie die noMatchingDates
Direktive scope
entfernen, verschwindet der Fehler einfach und Sie können datepickers richtig sehen und hinzufügen. Ich meine, das scope
:
scope: {
getAllDates: "&allDates"
}
Ich denke, dass es mit dieser Linie in docs zu tun hat:
Mehr Richtlinien anfordernden isoliert Umfang.
Und es hat wahrscheinlich auch mit der md-datepicker zu tun, die mehr Anweisungen mit dem isolieren Bereich haben würde. Also, wie kann ich diesen Fehler lösen (und immer noch in der Lage sein, die Datumsliste zu senden)?
Wenn es nicht gelöst werden kann (behalten den Umfang) angesichts der Art der md-datepicker, wie kann ich diese dynamische Validierung erreichen? Ich denke, es könnte mit einem Controller und der ng-change
gemacht werden, aber ich bin mir nicht sicher, ob es eine richtige Lösung wäre.
Danke, ich denke es funktioniert, aber trotzdem habe ich noch ein Problem damit. Übergeben Sie das Array von Daten durch "keine Übereinstimmungsdaten", gibt es nur Daten, bis das aktuelle Datum geändert wird. Zum Beispiel, wenn ich 5 Datepickers habe und ich die 3. modifiziere, bekomme ich nur die ersten drei Daten und der Rest (2) fehlt ... genauso, wenn ich das 4. Datum modifiziere, ich einfach bekomme die 4 ersten Daten und die letzte fehlt ...:( – Drumnbass
Btw @floribon, wo und wie soll ich '$ watch' für Änderungen? – Drumnbass
können Sie' scope. $ Watch (attr.noMatchingDates) 'nach Änderungen der Referenzen auf' overtimeList' zu sehen. Oder wenn das ein Array ist Das wird an der Stelle aktualisiert, an der Sie '$ watchCollection' verwenden können. Leider sind Ihr Anwendungsfall und Ihre Fragen ein bisschen zu weit, Sie sollten ein kleines Beispiel Ihres Problems schreiben und eine neue Frage zu einem bestimmten Punkt stellen. – floribon