我正在尝试编辑表格中的数据。
代码的重要部分是:
修改
$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 :(得分: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>