2013-02-19 14 views
53

Ho trovato un comportamento strano: i valori del modello dei trim angolari di default. E il googling veloce non mi aiuta a risolvere questo problema. Ho trovato proposte di direttiva ng-no-trim, ng-trim e così via. Ma niente funziona.Come disabilitare il taglio degli input in AngularJS?

Ho fornito un piccolo frammento che rappresenta questo problema di seguito.

function Ctrl($scope) { 
    $scope.text=''; 

    $scope.$watch('text', function (newValue) { 
    console.log(newValue); 
    }); 
} 

Inoltre, è possibile provare questo frammento here.

Ho aggiunto un'area di testo sincronizzata con il modello text. Ma non reagisce per guardare quando si aggiungono nuovi spazi finali o si rompe la linea con uno nuovo.

Cosa posso fare per disattivare questo comportamento? Grazie.

risposta

88

La direttiva in questione è nuova in 1.1.1; puoi vederlo funzionare usando JS Bin snippet.

<textarea cols="30" rows="10" ng-model="text" ng-trim="false"></textarea> 
+0

Grazie mille. Ho incluso la versione 1.1.1 e ora funziona alla grande. – ValeriiVasin

+1

Nessun problema. Forse vale la pena notare che 1.1.2 è attualmente l'ultimo instabile. –

+0

Potresti dirmi ancora una cosa. Ho aggiunto 'ng-trim = 'false'' e quando digito all'interno della textarea ho bisogno di duplicare il contenuto in alcuni' div', ma sostituire' \ n 'con 'br'. Ma la mia sostituzione non funziona. BR viene inserito solo dopo aver digitato un altro carattere in una nuova riga. qualche idea? Esempio: http://jsbin.com/ibosub/12/edit – ValeriiVasin

3

Fallback per 1.0.x angolare

var app = angular.module('app', []); 

app.directive('ngTrim', function() { 
    return { 
     require: 'ngModel', 
     priority: 300, 
     link: function(scope, iElem, iAttrs, ngModel) { 
      if (iAttrs.ngTrim === 'false') { 
       // Be careful here. We override any value comming from the previous 
       // parsers to return the real value in iElem 
       ngModel.$parsers.unshift(function() { 
        return iElem.val(); 
       }); 
      } 
     } 
    } 
}); 

angular.bootstrap(document, ['app']); 

http://jsfiddle.net/vXCnj/3/

2

È possibile attivare/disattivare l'opzione di assetto utilizzando ng-trim = true/false. Rif. https://docs.angularjs.org/api/ng/input/input%5Btext%5D

+0

Buono a sapersi. Mai sentito parlare di questa direttiva prima! –

+0

Anche per me è stato un nuovo @MartynChamberlin –

Problemi correlati