angular.copy()不会破坏对模型的引用

时间:2016-09-20 10:24:48

标签: javascript angularjs

我们假设我有一个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);
    }

2 个答案:

答案 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)