似乎angularjs只能与每个模块内部的数据进行交互,但是任何外部javascript都无法更改数据或访问angularjs服务。
例如,如果我有一些非angularjs代码和一个并行运行的angularjs模块,并且非angularjs代码需要更新angularjs使用的一些数据(例如通过调用服务方法),是否有这样做的方法?
另一个例子,假设我正在使用Comet并从服务器推送通知。因此,例如,如果用户收到新消息,我希望能够从服务器推送该消息(例如,通过http-chunk响应发送一些javascript代码,并且执行该代码)。我怎么能将这些通知传递给我的角度服务?
答案 0 :(得分:1)
您可以通过非角度js达到角度范围:
angular.element(document.getElementById('page-data')).scope().$apply(
function(scope)
{
scope.yourScopeMethod( argument1, argument2, ... );
});
其中:
document.getElementById('page-data')
是包含角度视图的html元素。