Angularjs中的模型更新

Angularjs中的模型更新,angularjs,angular-ui-grid,Angularjs,Angular Ui Grid,以下是plnkr: 如果我添加两次信息,最新的数据是相同的,我如何防止模型更新 $scope.personList = []; $scope.newPerson = {}; $scope.columns = [{ field: 'Name' }, { field: 'Country' }]; $scope.gridOptions = { enableSorting: true, columnDefs: $scope.columns, onRegisterAp

以下是plnkr:

如果我添加两次信息,最新的数据是相同的,我如何防止模型更新

 $scope.personList = [];
  $scope.newPerson = {};
  $scope.columns = [{ field: 'Name' }, { field: 'Country' }];
  $scope.gridOptions = {
    enableSorting: true,
    columnDefs: $scope.columns,
    onRegisterApi: function(gridApi) {
      $scope.gridApi = gridApi;
    }
  };

  $scope.addPerson = function(){

  $scope.personList.push($scope.newPerson);

}

  $http.get('file.json')
    .success(function(data) {
      $scope.personList = data.records; 
      $scope.gridOptions.data = data.records;
      console.log($scope.gridOptions.data);
    });

使用
angular.copy()
进行复制,这样就不会每次都将对同一对象的引用推送到数组中

$scope.addPerson = function(){
  var newPerson= angular.copy($scope.newPerson);
  $scope.newPerson ={}; // reset to clear view
  $scope.personList.push(newPerson);    
}

使用
angular.copy()
进行复制,这样就不会每次都将对同一对象的引用推送到数组中

$scope.addPerson = function(){
  var newPerson= angular.copy($scope.newPerson);
  $scope.newPerson ={}; // reset to clear view
  $scope.personList.push(newPerson);    
}

我想这就是你想要做的

JS的变化

$scope.addPerson = function(){

    $scope.personList.push(angular.copy($scope.newPerson)); //optional to use angular.copy()
    $scope.newPerson={}; //reset the object rather than one field
  }

我想这就是你想要做的

JS的变化

$scope.addPerson = function(){

    $scope.personList.push(angular.copy($scope.newPerson)); //optional to use angular.copy()
    $scope.newPerson={}; //reset the object rather than one field
  }

您需要做的是,在推入列表之前,需要检查列表中项目的索引。如果索引>-1,则按下

$scope.addPerson = function(){

  if($scope.personList.indexOf($scope.newPerson > -1){
    $scope.personList.push($scope.newPerson);
  }
}

您需要做的是,在推入列表之前,需要检查列表中项目的索引。如果索引>-1,则按下

$scope.addPerson = function(){

  if($scope.personList.indexOf($scope.newPerson > -1){
    $scope.personList.push($scope.newPerson);
  }
}

这是一个带有:

您应添加此功能:

$scope.containsObject= function(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
    if (list[i] === obj) {
        return true;
    }
}

return false;

这是一个带有:

您应添加此功能:

$scope.containsObject= function(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
    if (list[i] === obj) {
        return true;
    }
}

return false;

谢谢你的快速回答谢谢你的快速回答