在angularjs中使用全局



我试图在另一个文件中使用一个文件的全局变量。我让它从原始文件(controller.js)工作到html文件,但我不能让它从controller.js工作到service.js.

我对棱角分明的事物还很陌生,正试图弄清楚这一点。

您似乎想要在控制器中声明一个变量,以便您的服务可以向该变量写入数据。你需要考虑另一种方式,通过依赖注入将服务传递给你的控制器

app.controller('homeCtrl', function($scope, myServiceIsNowInjected){
})

然后在控制器中调用该服务的方法:

myServiceIsNowInjected.getDataFromServer('my param');

然后,您将遇到从服务器获取数据是异步的问题,因此您需要使用angular promise,以便在收到数据时将结果分配给作用域上的变量。以上,仍在您的控制器中将变为:

myServiceIsNowInjected.getDataFromServer('my param').then(function(data){
  $scope.viewvar = data;       
}, function(err){ console.log(err) });

通过这种方式,您不是将全局变量传递给服务,让服务将数据写入该变量,而是要求服务执行一些任务,并让控制器将该任务的结果写入$scope,使其可用于视图。

如前所述,这里提供了一个完整的解决方案示例。

$rootScope应该而不是用于这种事情——随着应用程序的增长,它会给您带来问题,而使用从服务中提取信息的模块化控制器则不会。

一个选项是使用$rootScope。

在您定义的控制器中:

$rootScope.variable = 'your value';

然后,在一个服务或另一个控制器中使用它:

Console.log($rootScope.variable);

请记住在控制器/服务定义中注入$rootScope(就像使用$scope一样)。

相关内容

  • 没有找到相关文章

最新更新