$ watch从指令内部调用时未检测到数组长度的变化

时间:2014-07-12 06:47:36

标签: angularjs angularjs-directive

所以,我正在创建一个线程论坛。我想添加一个徽章,以便在线程包含新注释时通知。这是我的代码,适用于包含注释的帖子。它在一个指令内,它还包含一个编译,如果这可能导致问题?:

if($scope.post.child_posts){
    var scope = $scope;
    scope.$watch(function(){
        return scope.post.child_posts.length;
    }, 
    function(newValue, oldValue){
        console.log(newValue, oldValue);
    }, true);
};

这是为了输出每个级别的线程的回复数量;但是,newValue和oldValue总是一样的!当我刷新页面时,它会更新数字,但它们仍然是相同的。我做了一些搜索,看起来有一个bug,其中newValue和oldValue是相同的,但它似乎已被修复,我正在使用最新版本。

我对编程很新,所以我很感激帮助。

1 个答案:

答案 0 :(得分:0)

请将以上代码更改为:

    $scope.post.child_posts = [];

    $scope.$watch('post.child_posts.length', 
        function(newValue, oldValue){
            if(newValue !== oldValue)
               console.log(newValue, oldValue);
            else
               console.log(newValue);
        }
    );

我猜的是:if条件可能会阻止$ watch设置,你也不需要深度监视(第三个参数为true),因为你正在观看长度而不是数组......