Ich habe dieses Stück Code und es funktioniert einwandfrei. Je nach Feldwert werden einige Stile im Texteingabefeld umgeschaltet.Dynamisches Elternelement
numberInput :: (MonadWidget t m) => m (Dynamic t (Maybe Double))
numberInput = divClass "form-group" $ do
let errorState = "style" =: "border-color: red"
validState = "style" =: "border-color: green"
rec n <- textInput $ def & textInputConfig_inputType .~ "number"
& textInputConfig_initialValue .~ "0"
& textInputConfig_attributes .~ attrs
let result = fmap (readMay . unpack) $ _textInput_value n
attrs = fmap (maybe errorState (const validState)) result
return result
lief ich in einige Probleme das Element dynamische Eltern zu machen. Ich möchte die Stile im übergeordneten Element der Texteingabe umschalten. Ich möchte etwas schreiben wie, aber gescheitert!
numberInput :: (MonadWidget t m) => m (Dynamic t (Maybe Double))
numberInput = do
rec
dynAttrs <- -- reference to textInput
elDynAttr "div" dynAttrs $ do
n <- textInput $ def & textInputConfig_inputType .~ "number"
& textInputConfig_initialValue .~ "0"
...
Vielen Dank für Ihre Hilfe! Hier
Was bedeutet "gescheitert"? Ein Compiler-Fehler (include it * verbatim * und in * es ist die Gesamtheit) oder ein Laufzeitfehler (beschreiben Sie es)? [Sie haben kein vollständiges Programm gepostet] (https://stackoverflow.com/help/mcve), so dass es fast unmöglich ist, jemandem mitzuteilen, warum Ihr Programm nicht funktioniert. – user2407038
Also 'gescheitert' bedeutet, dass ich den Arbeitscode der Funktion numberInput so schreiben möchte, dass die dynamischen Attribute auf den übergeordneten DOM-Knoten gesetzt werden, aber ich habe nur eine sehr vage Vorstellung, wie das funktionieren könnte. Ich habe nicht genug begriffen, wie reflect funktioniert, daher bin ich ein wenig verloren und weiß nicht, wie es weitergehen soll und kann keinen Beispielcode oder eine Fehlermeldung liefern. Aber ich habe eine sehr konkrete Frage. Wie würden Sie den vollkommen guten Code, den ich zur Verfügung stelle, so umschreiben, dass die dynamischen Attribute auf den übergeordneten DOM-Knoten gesetzt werden. – Schoon
"Wie würden Sie diesen Code umschreiben, um X statt Y zu machen" ist für SO unpassend. Ich nehme an, Sie wollen sich auf 'n' in der rhs von' dynAttrs' beziehen, aber 'n' ist im inneren Bereich des Arguments gebunden, das an' elDynAttr' übergeben wird. Die Lösung ist wahrscheinlich, 'n' (und was immer Sie sonst noch brauchen) von diesem inneren Bereich zurückzugeben und diese Variablen wieder im äußeren Bereich zu binden:' do {dynAttrs <- .. n ..; (Ergebnis, n) <- elDynAttr "div" dynAttrs $ do {n <- ..; ..; Rückgabe (Ergebnis, n)}; Ergebnis zurückgeben} '. (Ich weiß nicht genug über DOM, um es sicher zu sagen). – user2407038