2016-05-09 18 views
0

Ich habe eine eckige Seite, die ich eine Reihe von Links aus einer Liste anzeigen. Hier ist der HTML/Schräg Code:HTML: Link editierbar machen

<li role="menuitem" 
    ng-repeat="foo in foos track by $index" 
    ng-click="selectFoo(foo)"> 
    <a href="#"> 
     {{foo}} 
     <span class="glyphicon glyphicon-pencil pull-right"></span> 
    </a> 
</li> 

Ich möchte der Benutzer durch Klicken auf die glyphicon den Anzeigenamen foo in der Lage sein zu bearbeiten. Ich könnte das ziemlich leicht tun, indem ich eine ng-click Komponente der <span> hinzufüge und ein modales mit einer Texteingabe usw. öffne.

Aber ich will es in einer stromlinienförmigeren Art tun. Ist es möglich, den Glyphon-Klick zu aktivieren, ändern Sie den Link in eine Texteingabe, in der der Benutzer etwas eingeben kann, drücken Sie Enter und beende die Bearbeitung. Ich möchte nicht die <a> in eine Texteingabe machen, weil das Klicken auf es eine andere Handlung tut. Gibt es eine Möglichkeit zu erreichen, was ich will?

Antwort

0

Sie AngularJS verwenden könnte {{foo}} und zeigt einen <input> zum Umschalten zwischen zeigt, die zu foo binded ist:

<li role="menuitem" 
    ng-repeat="foo in foos track by $index"> 
    <span data-ng-hide="foo.isEditing" data-ng-model="foo"></span> 
    <input type="text" data-ng-show="foo.isEditing" data-ng-model="foo"> 
    <a data-ng-click="foo.isEditing = !foo.isEditing" href="#"> 
    <span class="glyphicon glyphicon-pencil pull-right"></span> 
    </a> 
</li> 

Also, wenn ein Benutzer klickt auf die glyphicon dann sollte es den Zustand der foo.isEditing von false zu true wechseln oder und umgekehrt. Sowohl span als auch input werden über ng-model an foo gebunden, so dass Aktualisierungen sofort auf foo erfolgen. Lass es mich wissen, wenn dir das gelingt, Prost!

+0

Ich habe es ausprobiert, aber das war die On-Click-Funktion des Li-Elements, obwohl ich direkt auf das Glyphicon-Element geklickt habe. Eine Möglichkeit, den Klickbereich zu definieren. – Richard

+0

Sie müssen den 'ng-Klick' aus dem' li'-Element entfernen, da dadurch ein click -Ereignis an den gesamten Bereich des Elements gebunden wird. Wenn Sie dieses click -Ereignis irgendwo binden müssen, binden Sie es möglicherweise an das '' -Element. Wenn also ein Benutzer auf den Text klickt, wird der Klick ausgelöst. – ManBearPixel

0

Einstellen der contentEditable Eigenschaft auf Ihre gezielte Spanne Element sollte die einfachste Lösung sein, ein wünschen. z.B .:

<span class="glyphicon glyphicon-pencil pull-right" contentEditable="true"></span> 

Auch sie Steuern (höchstwahrscheinlich durch einen Ein/Aus Toggle-Implementierung) durch das Skript, würde so einfach sein.

Verwandte Themen