【问题标题】:Angularjs how to change $rootScope variables from UIAngularjs如何从UI更改$rootScope变量
【发布时间】:2015-10-17 06:10:42
【问题描述】:

我正在制作一个带有角度的动态网页,主页的内容应该改变,但为了避免编写太多代码,我决定让它通用,但要知道我需要什么类型的内容被请求通过 ng-click 从链接/按钮发送此参数,这不是问题,但是当我必须更改控制器时,我无法读取参数。

ng-click="name='Name change'"

这里我正在尝试更改名为 name 的 $rootScope 变量,我尝试过

ng-click="$rootScope.name='Name change'"

即使有服务功能,但看起来不起作用(我对 angularjs 不太了解,所以我尝试了)

 ng-click="$service.cambiarTipo='Name change'"

我做了一个 plunker http://plnkr.co/edit/1BN76SbUAHuOSHs02gpL?p=preview

如果您检查控制台日志,您将看到它未定义的变量,显然如果我从一个控制器更改 $rootScope.name 我可以从另一个控制器看到它,但这没有用,因为我需要从用户不是控制器。

如何从 html 更改 rootScope 变量?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    这是一个在两个控制器之间使用共享服务而不使用 $rootscope 的控制器。 http://plnkr.co/edit/maKNHgVH20GxTJeCEveh

    请注意,ng-click 正在调用服务函数。我假设该功能用于更改名称。

    ng-click="service.cambiarTipo('Name change')"
    

    【讨论】:

      【解决方案2】:

      您真的不应该使用太多 $rootScope,更不用说从模板中修改它了。话虽如此,您可以将 $rootScope 分配给 $scope 变量并像普通范围变量一样从模板访问。 plunker

      控制器: $scope.rs = $rootScope

      模板: rs.name = 'Name Change'

      我想重申,这不是你应该做的事情,因为它违背了角度方式。

      【讨论】:

      • 如果不是角度方式,我能做些什么来达到同样的效果?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 2013-12-28
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多