从AngularJS监视全局变量

时间:2013-05-03 11:44:54

标签: angularjs

我想不断监视Angular中全局变量的值。 我有一个flash电影,它记录麦克风数据并将其推送到全局变量。 我从Angular中引用这个变量,如下所示:

$scope.audioData = $window.audioData;
$scope.$watch('audioData', function() {
    console.log("audio in angular!:", $scope.audioData.length);
});

并在HTML中添加:

<h1>{{audioData.length}}</h1>

在HTML中,我可以看到录制后音频数据发生了变化,但是在录制时,监听功能不会被称为 ,我需要将音频流式传输到服务器。 / p>

1 个答案:

答案 0 :(得分:2)

这里要记住两件事。

首先,$watch默认只监视对象和数组的标识,所以如果内部有 ,它就不会注意到价值。这可以通过观察length或使用Yoshi提到的第三个参数来解决。

要记住的第二件事是Angular只会在触发它的时候检查它的手表。如果Angular-world中没有任何事情发生,那么就不会执行任何手表或回调。由于您的录音机位于Angular世界之外,因此需要通知Angular有些内容已被更改。这可以通过在更新录制后偶尔调用$apply来完成。另一种考虑方法是使用$timeout定期进行角度更新。