2017-12-06 1 views
1

Ich würde gerne verstehen, wie Sie das Folgende tun, sie haben mich gebeten, zu versuchen, eine Funktion im Controller zu erstellen, anstatt den Code in der Ansicht zu schreiben.AngularJS, brauche Hilfe beim Erstellen einer einfachen Funktion

Der Code ist:

<div class="row"> 
       <div class="col-xs-12 max300" 
        uib-dropdown is-open="vm.descriptionDropdownOpen"> 
        <textarea name="description" class="form-control" 
           ng-model="vm.presence.description" 
           ng-click="vm.toggleDescriptionDropdown()" 
           autofocus> 
        </textarea> 
        <ul id="descriptionDropdown" uib-dropdown-menu> 
         <li ng-repeat="descr in vm.loadedDescriptions" 
          ng-click="vm.presence.description = descr.text; 
             vm.descriptionDropdownOpen = false;"> 
          {{descr.text}} 
         </li> 
        </ul> 
       </div> 
      </div> 

so dass im Grunde das ein Textfeld erstellt, und wenn Sie darauf klicken, wird ein Dropdown-Menü angezeigt wird, und wenn Sie auf eine Reihe von Dropdown-Menü klicken, wird diese Zeichenfolge wird in das Textfeld eingefügt.

Was ich tun muss, ist eine Funktion zu erstellen, die in den Controller gelegt wird, so dass wir einfach diese Funktion in der Ansicht aufrufen und den Code schöner halten können.

Diese Funktion muss nur den letzten Teil des Codes, den ich oben gepostet habe, machen, nehme den String, auf den ich klicke, aus dem Dropdown-Menü und lege ihn in das Textfeld!

Es ist wirklich einfach, aber wie ich ich bin nicht so sicher, lerne, wie ich es

setDescription(text: string) { 
     // code should go here. 
} 

Sorry für diese dumme Frage schreiben sollte, sein möchte nur sicher, richtig zu verstehen, was ich tue! danke

+0

Ist Ihre Ansicht Code nicht bereits das gleiche tun? 'ng-click =" vm.presence.description = descr.text; ' – puelo

+0

ja! aber als ich lerne, haben sie mich gefragt, wie ich das mit einer funktion im controller implementieren könnte, um den code in der sicht sauber zu halten! ! – AJ989

Antwort

1

html

ng-click="vm.submitString(descr.text)" 

Controller

vm.submitString = function(text){ 
    return vm.presence.description = text; 
} 
+0

Vielen Dank für die Antwort, ich versuche herauszufinden, wie kann ich Ihren Code in die Eingabe, die sie mir gaben, sagte sie, um das mit einer Funktion in der Steuerung zu implementieren, geben mir den Beginn der Funktion sein : 'setDescription (Text: string) {. // Code sollte hier gehen }' also, wenn ich es richtig, mit Ihrem Code zu erhalten, sollte es so etwas wie sein: html: 'ng- click = "setDescription (descr.text)" ' Controller: 'setDescription (Text: Zeichenfolge) { Rückgabe vm.presence.description = Text; } ' ist das korrekt? Danke nochmal! – AJ989

+0

ich denke, setDescription (text: string) {} ist neueste eckige Versionen, also ja es würde auch funktionieren –

0

wie folgt gelöst:

setDescription(text: string) { 
     return this.presence.description = text; 
} 
Verwandte Themen