2016-04-18 21 views
5

Ho un problema con un modello personalizzato che ho creato utilizzando Angular Formly. Il modello ha un testo di input e due pulsanti per diminuire e aumentare il valore del modello di questo input. Il problema è che il pulsante giù funziona e riduce il modello correttamente, ma il pulsante su non aumenta e invece esegue la stessa azione di $ scope.down(). Cosa ho sbagliato?Modello personalizzato e ng-clic Angolare Formalmente

HTML Template:

<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> 

formly campo:

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; 
         } 
    }; 
} 

Aggiornamento: il codice in JSBin sembra funzionare http://jsbin.com/fakunoqeti/edit?html,js,console,output così quello che potrebbe essere il problema? Ho bisogno di un esperto in forma angolare D: D:

+0

dato il fatto che funziona adesso, è difficile determinare il problema. Eventuali errori nella console? –

+0

Nessun errore. Ho appena notato che anche facendo clic su input di testo aumenta l'evento ng-click che viene prima. Sembra un problema di propagazione degli eventi ma provare a inserire un $ event.stopPropagation() non fa alcuna differenza ... –

+0

Mi piacerebbe anche sapere un altro modo per fare la stessa cosa per aggirare questo particolare problema. Qualsiasi aiuto sarebbe molto apprezzato! Grazie –

risposta

0

perché i tuoi campi sono così? quella non è una tecnica formale adeguata.

{ 
    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]++; 
    }; 
    } 
} 

questo è il primo posto in cui iniziare ... inserirlo nel formato corretto.

Poi, se questo non funziona, mi piacerebbe passare nella proprietà dell'indice $ nella funzione ng-clic: ng-click="up($index)" e quindi modificare la funzione di $scope.up = function(index) {

Problemi correlati