1

我想不断地监控来自 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 中,我可以看到录制后音频数据发生了变化,但是在录制时没有调用 watch 函数我需要将音频流式传输到服务器。

4

1 回答 1

2

这里有两件事要记住。

第一个是$watch默认情况下只监视对象和数组的标识,因此它不会注意到值内部是否有变化。这可以通过观看length或使用 Yoshi 提到的第三个参数来解决。

要记住的第二件事是,Angular 只会在有东西触发它时检查它的手表。如果 Angular 世界中没有发生任何事情,则不会执行任何监视或回调。由于您的记录器位于 Angular 世界之外,因此它需要通知 Angular 某些内容已更改。这可以通过$apply在更新录音后偶尔调用来完成。另一种考虑的方法是使用$timeout.

于 2013-05-03T11:57:58.563 回答