将数据从一个函数传递到另一个函数

时间:2015-01-16 06:39:03

标签: javascript angularjs

我正在尝试编辑表格中的数据。

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进行保存? 非常感谢

3 个答案:

答案 0 :(得分:0)

在您的编辑功能中,调用添加此功能

$scope.add()

如果您需要传递任何参数

$scope.add(params)

答案 1 :(得分:0)

将添加功能调用为$scope.add(param1,param2,..);

将添加函数定义为$scope.add=function(param1,param2..){};

但是,我看到代码中的所有变量都是范围变量,如果你只想修改它们,那么你可以直接在add函数中使用它们而不是将它们作为参数传递。

答案 2 :(得分: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>