AngularJS 在替换对象时失去对对象 属性 的监视

AngularJS loses watch on object property when object is replaced

当我用该对象的另一个实例替换包含正在监视的 属性 的对象时...AngularJS 似乎失去了对 属性 的引用。 .我能理解...但是什么是重新连接成员 属性 的好方法,比如说,一个 ng-repeat 指令。例如...

HTML

<div ng-repeat="portfolio in data.portfolios">
  {{ portfolio.name }}
<div>

JS

$scope.data = {};
$scope.data.portfolios = [
    { Name: "aaa" },
    { Name: "bbb" }
];

 $scope.portfoliosService.loadPortfolios(clientId, true, true)
    .success(function (response) {
        $scope.data = response.data;
    });

注意:response.data 包含一个名为投资组合的数组。

我认为问题在于您在将 response.data 分配给 $scope.data 时丢失了 portfolios 属性。因此,ng-repeat 将永远不会呈现,因为在分配 response.data.

后没有 属性 portfolios

所以,不是看,angular还在看$scope.data,只是ng-repeat找不到portfolios 属性 再 Check this plunkr

只需将您的代码更改为

$http.get('data.json')
 .then(function (response) {
    $scope.data.portfolios = response.data;
});

此外,不要使用 success,因为它已被弃用

另一个场景 which is covered in plunkr。让我知道它是否涵盖了您要查找的内容。在这里,我将 property 分配给 $scope.data