dedlfix: checkboxen disablen wenn radio klicked und umgekehrt

Beitrag lesen

Tach!

Kann mir da vielleicht jemand weiter helfen. Ich hänge beim foreach, da ist this[type] undefined und ich weiß nicht, wie ich die Elemente mit einem bestimmten type und name durchlaufe.

Bist du mit dem Problem schon weitergekommen? Wenn ich mir mit console.log() - alert() ist kein gescheites Debugging-Werkzeug - das this innerhalb der Funktion select oder deselect anzeigen lasse, dann zeigt das auf den Controller-Scope. Wenn du das auslösende Element haben möchtest, musst du im ngClick-Handler $event übergeben und kannst es dann im Handler mit deinEventHandlerFunctionParameterName.target ansprechen. Das hat dann auch eine Eigenschaft type, wenn es ein input-Element ist.

Wenn du nun Elemente eines bestimmten Typs in einem bestimmten Teilbereich des DOMs haben möchtest, dann musst du das DOM abklappern. Das geht mit purem Javascript oder so wie man es mit jQuery machen würde. AngularJS hat ja ein Mini-jQuery eingebaut oder du hast ein vollständiges eingebunden.

Ich würde außerdem diese Logik aus dem Controller rausnehmen und eine Direktive erstellen. Es gibt da den ungeschriebenen Angular-Leitsatz: Alles was im DOM rumfummelt, gehört nicht in einen Controller sondern in eine Direktive. Du kannst das aber auch dort lassen, wenn dir Direktiven zu schwierig sind. Jedenfalls stelle ich mir die Anwendung so vor:

<input type="radio" name="test1" hw-select="input[type=radio]" />

hw-select ist der Direktivenname (im Code dann hwSelect) und input[type=radio] ist ein beliebiger Selektor-Ausdruck. Damit wird die Direktive universell und du kannst beliebige Ziele definieren. Im Controller der Direktive kannst du damit die Elemente ansprechen und wie gewünscht bearbeiten.

dedlfix.