我有以下两个对象:
...style.backgroundImage = `url(${objectURL})`;
// or 'url(' + objectURL + ')'
我有这个html模板(只是为了简化):
$scope.MyObj_1={
Id:"1",
Title:"Title1",
Items:[
{
Id:"1",
Comment:"Simple comment 1",
}
]
};
$scope.MyObj_2={
Id:"2",
Title:"Title1",
Items:[
{
Id:"2",
Comment:"Simple comment 2",
},
{
Id:"3",
Comment:"Simple comment 3",
},
{
Id:"4",
Comment:"Simple comment 4",
}
]
};
当我用MyObj_1值设置MyObj然后我用MyObj_2设置MyObj时,我得到的渲染问题与ng-repeat的缓慢有关。事实上,ng-repeat首先添加MyObj_2项,然后删除与MyObj_1相关的项目。
我尝试了ng-cloak和$ timeout,但行为仍然相同。
我想知道为什么ng-repeat首先不删除旧元素然后推送新元素。
答案 0 :(得分:0)
Angular.copy使对象从源到目标克隆。它从目标对象中删除所有对象,然后从源复制属性。
Angular.merge将源对象附加到destination。如果目标对象已经有元素,它将保留在那里,源对象的新属性将添加到目标对象。
答案 1 :(得分:0)
如果您设置$scope.MyObj_2 = $scope.MyObj_1;
,则会出现此行为
然后他们将在内存中指向相同的引用。
您需要使用的是angular.copy(),它会像这样创建一个源代码的深层副本
$scope.MyObj_2 = angular.copy($scope.MyObj_1);
另外,在重复你有一个typeo,应该是
<ul>
<li ng-repeat="note in MyObj.Items" >{{note.Comment}}</li>
</ul>