Javascript 只是对angularjs中绑定的工作原理感到困惑

Javascript 只是对angularjs中绑定的工作原理感到困惑,javascript,angularjs,Javascript,Angularjs,我已经在angularjs中创建了一个CRUD,这让我想知道为什么当我更改vm.userlistData2的值时,它也会更改正在显示的vm.userlistData 下面是我如何使用服务获取数据的 dataservice.getUserProfile(vm.userId).then(function (data) { vm.userlistData = data; vm.userlistData2 = data; }); 这是因为userlistData和userlistData2共

我已经在angularjs中创建了一个CRUD,这让我想知道为什么当我更改vm.userlistData2的值时,它也会更改正在显示的vm.userlistData

下面是我如何使用服务获取数据的

 dataservice.getUserProfile(vm.userId).then(function (data) {
  vm.userlistData = data;
  vm.userlistData2 = data;
});

这是因为userlistData和userlistData2共享同一个对象引用。您可以使用object.assign为userlistData2创建新的对象引用来避免此问题:

vm.userlistData=数据;
vm.userlistData2=Object.assign({},data);
Advanced data structure和JS提示建议您使用angular.copy 用法: 复制(源[目的])

你的例子是: copy(数据,vm.userlistData); copy(数据,vm.userlistData2)

  • angular自动化了内存管理,因此无需担心创建新引用

    • 这是因为userlistData和userlistData2共享同一个对象引用。您可以使用object.assign为userlistData2创建新的对象引用来避免此问题:

      vm.userlistData=数据;
      vm.userlistData2=Object.assign({},data);
      
      Advanced data structure和JS提示建议您使用angular.copy 用法: 复制(源[目的])

      你的例子是: copy(数据,vm.userlistData); copy(数据,vm.userlistData2)

      • angular自动化了内存管理,因此无需担心创建新引用

      因为两者都只是对同一
      数据对象的引用。因为两者都只是对同一
      数据对象的引用。也请尝试
      角度复制(数据)
      是,object.assign不适用于数组。angular.copy Does也请尝试
      angular.copy(数据)
      Yes,Object.assign不适用于数组。是的