Ann*_*e C 2 javascript angularjs angularjs-scope
从这个plunkr更容易看到问题:http://plnkr.co/edit/EFZCAXWFui0foMbfZkPb?p = preview
单击"单击以添加第一个"和"单击以添加第二个",然后您可以单击"锁定"图标以查看某些项目似乎具有相同的范围(或相同的ng模型).
然后单击"单击以添加第三个"此操作执行angular.copy,它不与其他共享相同的范围2.为什么?
如何将范围分开,以便每个"锁定"图标仅适用于自身,而不是其他项目?
在这一行:
var row = {"groupname":Math.floor(Math.random() * 9999999) + 1};
Run Code Online (Sandbox Code Playgroud)
您创建一个新对象,并创建一个存储在该变量中的此对象的引用row.您只需将此引用(不是row对象的副本)添加到数组中,因此两个数组中的元素都指向同一个对象.
angular.copy创建数组的"深层副本",因此将复制所有包含的对象,并且数组包含对这些新对象的引用.
如果要使用单独的对象,请在clickFirst函数中使用angular.copy复制对象:
var row = {"groupname":Math.floor(Math.random() * 9999999) + 1};
$scope.products1.push(row);
$scope.products2.push(angular.copy(row));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7118 次 |
| 最近记录: |