加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS:Basic $watch不工作

发布时间:2020-12-17 08:08:13 所属栏目:安全 来源:网络整理
导读:我试图在AngularJS中设置一个手表,我显然做错了,但我不太清楚。手表在直接页面加载时触发,但是当我更改观看值时,它不会触发。为了纪录,我还在匿名函数上设置了返回观察变量的手表,但是我有完全相同的结果。 我已经安装了一个最小的例子,在控制器中做
我试图在AngularJS中设置一个手表,我显然做错了,但我不太清楚。手表在直接页面加载时触发,但是当我更改观看值时,它不会触发。为了纪录,我还在匿名函数上设置了返回观察变量的手表,但是我有完全相同的结果。

我已经安装了一个最小的例子,在控制器中做所有的事情。如果它有所作为,我的实际代码被挂接在指令中,但是两者都以相同的方式失败。我觉得有一些基本的东西我失踪了,但我只是看不到它。

HTML:

<div ng-app="testApp">
    <div ng-controller="testCtrl">
    </div>
</div>

JS:

var app = angular.module('testApp',[]);

function testCtrl($scope) {
    $scope.hello = 0;

    var t = setTimeout( function() { 
        $scope.hello++;
        console.log($scope.hello); 
    },5000);

    $scope.$watch('hello',function() { console.log('watch!'); });
}

超时工作,你好,但手表不起火。

演示在http://jsfiddle.net/pvYSu/

这是因为您更新了值,而不知道。

你应该使用$ timeout服务而不是setTimeout,你不需要担心这个问题。

function testCtrl($scope,$timeout) {
    $scope.hello = 0;

    var t = $timeout( function() { 
        $scope.hello++;
        console.log($scope.hello); 
    },function() { console.log('watch!'); });
}

或者你可以调用$ scope。$ apply();强制有角度重新检查值,并在必要时调用手表。

var t = setTimeout( function() { 
    $scope.hello++;
    console.log($scope.hello); 
    $scope.$apply();
},5000);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读