2016-04-05 3 views
0

Мне нужно заменить текущие данные, которые я получил от пользователя в этой таблице. Но вместо замены текущих данных он предоставляет мне новую строку данных.Ошибка при замене текущих данных в javascript

$scope.users = [{username: "a", name:"b", status:"0", scope:"1"}]; 

    $scope.addUser = function(user) { 
     $dialog.open({ 
      showClose: false, 
      closeByEscape: true, 
      template: 'views/user/user-user-add.html', 
      controller: ['$scope', function ($dialogScope) { 
       $dialogScope.title = "New User"; 
       $dialogScope.user = { 
        username : "" , 
        name : "", 
        status : "", 
        scope : "", 
        }; 
      if(user){ 
       $dialogScope.title = "Update User"; 
       $dialogScope.user = { 
        username :user.username , 
        name :user.name , 
        status : user.status, 
        scope : user.scope, 
        }; 
        } 

      $dialogScope.add = function() { 
       $scope.users.push($dialogScope.user); 
       $dialogScope.closeThisDialog(); 
       } 
      }], 
     }); 
    }; 
+0

Вы можете указать код интерфейса, часть диалога. – Nivesh

+0

@ Нивеш предоставляет ссылку на плункер. https://plnkr.co/edit/VjUfWIaWxVduXNDT4zfR – sue

+0

эй, не понял. Вы выполняете addUser, а '$ scope.users.push' обязательно добавит нового пользователя в ваш' user array'. Какие данные вам нужно заменить? Старый, который вы получили из массива пользователей, отображаемого в таблице. Если да, то это больше похоже на обновление пользователя, чем addUser. – Nivesh

ответ

0

Проблема заключается в код ...

$dialogScope.user = { 
    username: user.username , 
    name: user.name , 
    status: user.status, 
    scope: user.scope, 
}; 

... создает user объект на области. Затем этот код ...

$scope.users.push($dialogScope.user); 

... толкает ссылку на этот объект на свой users массив. Теперь в любое время, когда вы позже измените $dialogScope.user, вы изменяете эту ссылку, которую вы нажали на ваш массив users, вместо создания нового user. То, что вы должны сделать, это ...

$scope.users.push(angular.copy($dialogScope.user)); 

... создать новый экземпляр user и нажать, что на ваш users массив. Затем вы можете очистить значения для своего диалога, используя ...

$dialogScope.user = {}; 
Смежные вопросы