2015-01-16 4 views
0

Я пытаюсь редактировать данные из таблицы.Передача данных из одной функции в другую

Fiddle

важная часть кодов:

Редактировать

$scope.editUser = function(param){ 

     if(param == 'new'){ 
      $scope.fName = ''; 
      $scope.lName = ''; 
      $scope.edit = true; 
     }else{ 
      $scope.edit = false; 
      $scope.fName = $scope.users[param-1].fName; 
      $scope.lName = $scope.users[param-1].lName; 
      //console.log($scope.users[param-1].lName); 
     } 

    }; 

нг нажмите на кнопку Сохранить

$scope.add = function(){ 
    $scope.users.push({ 
     fName:$scope.users.fName, 
     lName:$scope.users.lName 
    }); 
    $scope.users.fName = ""; 
    $scope.users.lName = ""; 
    console.log($scope.users.lName); 
}; 

как я могу передать данные от edit function до add function для сохранения? большое спасибо

ответ

0

У вас есть (почти) правая ViewModel, и вам не нужно передавать что-либо между этими функциями - они не звонят друг другу.

У вас есть $scope.users, и у вас есть $scope.fName и $scope.lName. Это прекрасно - вам просто нужно «запомнить», который был отредактирован пользователем.

Я просто немного изменить это:

$scope.users = [...]; // whatever you have 
$scope.userBeingEditedCopy = null; 
var userBeingEditedMaster = null; 

Тогда, когда «редактировать» щелкают, передать его фактический пользовательский объект для редактирования:

$scope.editUser = function(user){ 
    userBeingEditedMaster = user; 
    $scope.userBeingEditedCopy = angular.copy(userBeingEditedMaster); 
} 

Если вы хотите сохранить изменения, у вас уже есть все данные:

$scope.saveChanges = function(){ 
    angular.copy($scope.userBeingEditedCopy, userBeingEditedMaster); 
    // optionally, remove the user from being edited 
    userBeingEditedMaster = $scope.userBeingEditedCopy = null; 
} 

с точки зрения это легко подключить их до:

<div ng-repeat="user in users"> 
    <button ng-click="editUser(user)">Edit</button> 
    {{user.fName}} {{user.lName}} 
</div> 


<h3>Edit User:</h3> 

<div>first name: <input ng-model="userBeingEditedCopy.fName"></div> 
<div>last name: <input ng-model="userBeingEditedCopy.lName"></div> 
<button ng-click="saveChanges()">Save Changes</button> 
+0

спасибо, мне это очень помогло, но как я могу быть хорош в этом? я понятия не имею, как исправить это –

+0

как исправить что? Я не понимаю –

+0

Я имею в виду, что понятия не имел. ваше решение отлично. Еще один вопрос: есть кнопка (Добавить нового пользователя), следует ли сохранять данные в функции сохранения изменений? –

0

В вашей функции редактирования функции вызова надстройкой как этот

$scope.add() 

Если вам нужно передавать параметры

$scope.add(params) 
0

вызов функции добавить в $scope.add(param1,param2,..);

определить добавить функцию $scope.add=function(param1,param2..){};

Но я вижу, что все переменные в вашем коде являются переменными области видимости, если вы хотите изменить только те, которые вы можете использовать непосредственно в функции add вместо передачи их в качестве параметров.

Смежные вопросы