2016-06-23 27 views
0

Ich bin neu in AngularJs und ich bin neugierig auf, was ist der beste Ansatz zu bekommen dann Index eines ngrepeat auf eine Eingabe und vergleichen, um zu sehen, wenn die neue Zeichenfolge vom ursprünglichen Wert unterscheidet :

js:

var checkIfDataSampleHasChanged = document.getElementById('dsField' + i).value; 
    console.log(checkIfDataSampleHasChanged); 
    console.log($scope.currentSchema) 
    if (checkIfDataSampleHasChanged != $scope.currentSchema.sDataSamples.dsName) { 
     console.log("hello there") 
     $scope.currentSchema.sDataSamples.dsName = checkIfDataSampleHasChanged; 
    } 

html:

<fieldset ng-repeat="ds in currentSchema.sDataSamples track by $index"> 
    <label for="{{dsField$index}}" style="width:400px;"> 
    Data Sample Name ({{ds.dsFileName}}):</label> 
    <input name="{{dsField$index}}" type="text" style="width: 400px;" ng-model="currentSchema.sDataSamples[$index].dsName" value="{{ds.dsName}}" /> 
    <br> 
    <br> 
</fieldset> 
+0

Ich nehme an, dies in einer Form vorliegt, und dass Sie anschließend auf diese gegen alle Eingänge laufen. In diesem Fall könnten Sie das Formular einfach als Parameter an die Submit-Funktion übergeben und Sie können auf alle Mitglieder einzeln zugreifen und sie mit ihren ursprünglichen Daten vergleichen. – CautemocSg

Antwort

2

Sie einen Daten den Anfangswert zu halten und dann vergleichen Sie den geänderten Wert verwenden können. Sie können dies in reinen AngularJS Konstrukte ohne document.getElementById und andere Hacks mit:

angular 
 
    .module('app', []) 
 
    .controller('AppController', function ($scope) { 
 
    var initialSample = [ 
 
     {id: 1, name: 'Abc'}, 
 
     {id: 2, name: 'def'}, 
 
     {id: 3, name: 'ghi'}, 
 
     {id: 4, name: 'jkl'}, 
 
     {id: 5, name: 'mno'} 
 
    ]; 
 
    $scope.sample = angular.merge([], initialSample); 
 
    
 
    $scope.checkIfValueChanged = function ($index) { 
 
     var isValChanged = initialSample[$index].name !== $scope.sample[$index].name; 
 
     console.log(isValChanged); 
 
     if (isValChanged) { 
 
     alert("Value has changed"); 
 
     } else { 
 
     alert("Value has not changed"); 
 
     } 
 
    }; 
 
    
 
    $scope.changeVal = function(){ 
 
     var randInt = Math.floor(Math.random() * 5); 
 
     console.log(randInt); 
 
     $scope.sample[randInt].name = "Lorem ipsum"; 
 
    }; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script> 
 
<div ng-app='app' ng-controller='AppController'> 
 
    <ul> 
 
     <li ng-repeat="item in sample" ng-click="checkIfValueChanged($index)"> 
 
     {{item.name}} 
 
     </li> 
 
    </ul> 
 
    
 
    <button ng-click="changeVal()"> Change random value </button> 
 
    </div>