在$ rootScope存储数据(Storing data in $rootScope)

2019-09-26 14:35发布

它是明智的数据存储在$ rootScope。 我有一个使用它每100ms即将传感器数据的科尔多瓦应用程序。 对我来说,使用多个控制器的数据我使用的是被刷新每100ms $ rootScope.sensorData变量。 它是正常的使用这种方式? 有没有更好的办法做到这一点?

谢谢

Answer 1:

你可以把它存放在工厂。 在AngularJS厂是单身,创建因此只有实例。

myApp.factory('SensorSrv', function SensorSrv() {
  var sensorData;
  return {
    setData: setData,
    getData: getData
  };

  function setData(data) {
    sensorData = data;
  }

  function getData() {
    return sensorData;
  }
});

您也可以用户本地存储,如果你想坚持的数据。



Answer 2:

我认为这是不使用$ rootScope在整个代码逻辑不错的主意,有很多背后的原因......取而代之的是,你可以在服务创建代码登录更灵活......,你也可以看到此链接

在一个Angularjs应用程序中使用$ rootscope最佳实践?



Answer 3:

从官方文档:

$rootScope存在,但它可用于邪恶

在角范围形成的层次结构,从根范围在树的顶部prototypally继承。 这通常可以忽略不计,因为大多数的观点有一个控制器,因此示波器自己的。

偶尔有,你想使全球对整个应用程序的数据块。 对于这些,你可以注入$rootScope ,并设置其值像任何其他范围。 由于示波器从根范围继承,这些值将提供给连接到像NG-节目就像在本地值指示表达式$scope

当然,全局状态和吮吸你应该使用$rootScope谨慎,就像你(希望)以任何语言的全局变量使用。 尤其是,不要使用它的代码,唯一的数据。 如果你很想把功能上$rootScope ,它几乎总是更好地把它在需要的地方,也更容易测试可以注射的服务。

反之,不创建其唯一目的在生活中是存储和返回数据的比特的业务。

- AngularJS其他常见问题解答



Answer 4:

我建议使用app.value app.value('test', 20); 因为通过使用$ rootScope你暴露该值,这可能是一个安全威胁的所有服务。 通过使用可以确保您需要根据您的要求使用该变量在哪里。



文章来源: Storing data in $rootScope