深复制不起作用,浅复制可以正常工作

luc*_*cas 0 angularjs

有人知道为什么深层复制在我的情况下不起作用,浅层复制/赋值工作得很好:

        vm.category = null;

        $http.get("/api/category/" + vm.categoryId)
            .then(function (response) {
                //does not work
                angular.copy(response.data, vm.category);
                //works just fine
                vm.category = response.data;
            }, function (error) {
                vm.errorMsg = "There was an error retrieving category data: " + error;
            });
Run Code Online (Sandbox Code Playgroud)

这种深复制方法效果很好:

vm.category = angular.copy(response.data);
Run Code Online (Sandbox Code Playgroud)

为什么:

angular.copy(response.data, vm.category);
Run Code Online (Sandbox Code Playgroud)

不起作用?

Kyr*_*kos 5

文档中:

角度.copy(源,[目标]);
目标(可选)将源复制到的目标。如果提供,则必须与源类型相同。

angular.copy(response.data, vm.category);你的源中似乎是一个数组或一个对象,但目标,vm.category既不是数组也不是对象;它是空的。

尝试初始化vm.category[]or {}- 以匹配 的类型response.data