2016-04-18 6 views
5

Ich habe ein Problem mit einer benutzerdefinierten Vorlage, die ich mit Angular Formly gemacht habe. Die Vorlage hat einen Eingabetext und zwei Schaltflächen zum Verringern und Erhöhen des Modellwerts dieser Eingabe. Das Problem ist, dass die Abwärts-Schaltfläche funktioniert und das Modell korrekt verkleinert, aber die Schaltfläche "Nach oben" nicht erhöht wird und stattdessen die gleiche Aktion von $ scope.down() ausführt. Was irre ich mich?Benutzerdefinierte Vorlage und ng-Klick-Winkelform

HTML-Vorlage:

<span class="spinner"> 
    <button class="button decrease" ng-click="down()"></button> 
    <input type="text" ng-model="model[options.key]" name="{{options.key}}" /> 
    <button class="button increase" ng-click="up()"></button> 
    </span> 

heitlich Field:

item.key = key; 
item.type = "my_spinner"; 
item.defaultValue = item.templateOptions.placeholder; 
item.controller = function($scope) { 
         $scope.down = function() { 
          $scope.model[$scope.options.key] = $scope.model[$scope.options.key] - 1; 
         }; 
         $scope.up = function() { 
          $scope.model[$scope.options.key] = $scope.model[$scope.options.key] + 1; 
         } 
    }; 
} 

Update: der Code in JSBin scheint http://jsbin.com/fakunoqeti/edit?html,js,console,output so zu arbeiten, was könnte es das Problem sein? Ich brauche einen eckigen Experten D: D:

+0

angesichts der Tatsache zu $scope.up = function(index) { ändern, dass es jetzt funktioniert, ist es schwer zu Bestimmen Sie das Problem.Alle Fehler in der Konsole? –

+0

Keine Fehler. Mir ist gerade aufgefallen, dass sogar ein Klicken auf Texteingabe das ng-click-Ereignis erhöht, das zuerst kommt. Es scheint wie ein Event-Propagation-Problem, aber der Versuch, ein $ event.stopPropagation() einzufügen, macht keinen Unterschied ... –

+0

Ich würde auch gerne einen anderen Weg kennen, um dasselbe zu tun, um dieses spezielle Problem zu umgehen. Jede Hilfe würde sehr geschätzt werden! Danke, –

Antwort

0

Warum sind Ihre Felder so? das ist keine richtige Formtechnik.

{ 
    key: 'myKey', 
    type: 'my_spinner', 
    defaultValue: 'to.placeholder', 
    templateOptions: { 
     placeholder: 'myValue' 
    }, 
    controller: function($scope) { 
    $scope.down = function() { 
     $scope.model[$scope.options.key]--; 
    }; 
    $scope.up = function() { 
     $scope.model[$scope.options.key]++; 
    }; 
    } 
} 

das ist der erste Ort, den ich anfangen würde ... setzen Sie es in das richtige Format.

Dann wird, wenn das nicht funktioniert, ich in der $ Index Eigenschaft im ng-Click-Funktion übergeben würde: ng-click="up($index)" und dann Funktion