我们假设我有一个model.data
对象,并希望将该对象复制到datacopy
并对该新对象(datacopy
)进行一些更改。但是,当我更改datacopy
时,更改也会应用于model.data
。如何制止?
function updateClone (_object) {
var datacopy = angular.copy(model.data);
var index = _.findIndex(datacopy, function (obj) {
return obj.id === _object.id;
});
datacopy.splice(index, 1, _object);
}
答案 0 :(得分:1)
由于声誉,我无法发表评论。
Angular.copy()工作正常。
您可以尝试以下变体:将对象复制到函数外部并将其作为参数发送。
function updateClone (datacopy, _object)
{
var index = _.findIndex(datacopy, function (obj) {
return obj.id === _object.id;
});
datacopy.splice(index, 1, _object);
}
答案 1 :(得分:1)
我确信CREATE PROCEDURE [dbo].[UpdateUser]
@UserId int,
@UserName varchar(25)
AS
BEGIN
UPDATE [dbo].[User]
SET [UserName] = @UserName
WHERE [UserId] = @UserId
END
public void Update(Int UserId,String UserName )
{
SqlConnection con = new SqlConnection("Your Connection String");
con.Open();
SqlCommand cmd = new SqlCommand("UpdateUser", con); //UpdateUser is the name of stored procedure you created
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("UserName ", UserName );
cmd.Parameters.AddWithValue("UserId", UserId);
cmd.ExecuteNonQuery();
con.Close();
}
工作正常。
我相信的是模型正在存储对其他一些对象的引用。当angular.copy
使用嵌套引用复制数据时:http://jsfiddle.net/pxcf2dqw/2/
angular.copy(model.data)