繁体   English   中英

将数据从一个功能传递到另一个功能

[英]Passing data from one function to another

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

小提琴

代码的重要部分是:

编辑

$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);
        }

    };  

ng-点击“保存”按钮

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

在您的编辑函数中调用添加函数,如下所示

$scope.add()

如果您需要传递任何参数

$scope.add(params)

调用添加函数为$scope.add(param1,param2,..);

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

但是,我看到代码中的所有变量都是作用域变量,如果您只想修改这些变量,则可以直接在add函数中使用它们,而不必将它们作为参数传递。

您(几乎)拥有正确的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM