gpt4 book ai didi

javascript - 如何从 AngularJS 中观察窗口变量

转载 作者:行者123 更新时间:2023-11-29 19:19:18 24 4
gpt4 key购买 nike

我有一组窗口变量,我想将它们绑定(bind)到 AngularJS 中的一个范围变量。

到目前为止,这是我的代码,但它不起作用:

        .directive('watchGlobals', function() {
return {
link: function(scope, element, attrs) {
var watchGlobals = attrs.watchGlobals.split(',');
for (var i = 0; i < watchGlobals.length; i++) {
scope[watchGlobals[i]] = window[watchGlobals[i]];
}
}
}
});

执行此操作的最佳方法是什么?我试图避免必须使用 setInterval。我希望在更新窗口变量时更新范围。有没有一种方法可以像这样从 AngularJS 中观察窗口变量?

最佳答案

使用一个简单的 js pubsub(例如 PubSubJs ),您可以在 angular 中订阅服务内部。另一个应用程序应该通过 pubsub 发布,这将调用服务中的调用。该服务将更新 Angular 应用。

angular.factory('connectService', ['$rootScope', function($rootScope) {

var token = PubSub.subscribe( 'TOPIC_NAME', function(msg, data) {
$rootScope.$apply(function() {
$rootScope.$broadcast('TOPIC_NAME', { msg: msg, data: data });
});
});

}]);

您现在可以从其他应用发布数据:

PubSub.publish( 'MY TOPIC', 'hello world!' );

现在,无论何时你想要获取 Angular 使用的数据:

$scope.$on('TOPIC_NAME', function(data) {
console.log(data.msg, data.data); // do whatever you want to do with the data
});

关于javascript - 如何从 AngularJS 中观察窗口变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33702270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com