当对象改变时,绑定不会更新

时间:2016-02-11 05:17:25

标签: javascript angularjs

我有一个数组,基本上是另一个数组的子集:

$scope.theFew = $scope.theMany.filter(function(obj, index, array) {
   return obj.IsVerySpecial;
});

在我的控制器的其他地方,我有一些函数作用于theMany数组,改变了IsVerySpecial属性。

$scope.theFew中的对象的属性发生变化时,我希望$scope.theMany更新,但事实并非如此。发生了什么事?

2 个答案:

答案 0 :(得分:0)

对此进行了快速发现,但确实有效。公平地说,这是一些较旧的代码;)

代码应改为:

$scope.theFew = function() {
  return $scope.theMany.filter(function(obj, index, array) {
     return obj.IsVerySpecial;
  });
}

答案 1 :(得分:0)

我也有类似的问题。我用$ watch来更新范围变量。不确定这是否是最佳方式。

    controller: ['$scope', function($scope) {
        updateVisualData();

        $scope.$watch("data", function(newData) {
            console.log("new Data in paContent");
            console.log(newData);
            updateVisualData();
        }, true);

        function updateVisualData() {
            var contentData = $scope.data.components && $scope.data.components.filter(function(item) {
                return item.type === "Layout";
            });
            if (contentData && contentData.length > 0) {
                contentData = contentData[0];
                $scope.graphType = contentData.graph.type;
                $scope.graphData = contentData.graph.graphData;
                -----
            }
        }
    }]