【问题标题】:conditional properties in angularJS Application between two controllers两个控制器之间的angularJS应用程序中的条件属性
【发布时间】:2017-04-29 15:56:21
【问题描述】:

在我的应用程序中,我有两个控制器。

控制器 1 |控制器 2


  1. 从控制器 1 我在单击按钮时打开一个菜单,并在一个定义属性的函数中说, this.isTelephoneMenuOpen = true;

结果:我打开了菜单,有两个选项编辑和删除。

2.来自控制器 2 单击编辑时,我打开了一个模态叠加层-工作正常。

问题:但无法隐藏之前打开的菜单。

如何在另一个控制器中使用此属性在打开模式后隐藏菜单?

【问题讨论】:

标签: angularjs


【解决方案1】:

将属性定义为$rootScope,因为每个应用程序都有一个根范围。

在控制器 1 中 - $rootScope.isTelephoneMenuOpen = true.

在控制器 2 中 - 打开菜单后将其设置为 false $rootScope.isTelephoneMenuOpen = false

【讨论】:

  • @lakshaya:谢谢 Lakshya。最初,$rootScope.isTelephoneMenuOpen = false ----->In Controller 1 然后,$rootScope.isTelephoneMenuOpen = true ----->In Controller 1 结果:打开菜单需要制作,$rootScope.isTelephoneMenuOpen = false- ---->在控制器 2 中,但它以 false 作为初始值...那么如何在控制器 2 中再次使其为 false ?
  • 您不必将$rootScope.isTelephoneMenuOpen = false 设置为初始值。您应该在模型打开并且菜单应该隐藏时将其设置为 false。
  • @lakshya:在我的项目中,Rootscope 不工作 :( 当我将此属性放入 Rootscope 时,菜单没有打开
  • 你在控制器中定义了 $rootScope 吗?
  • @lakshya:在第一个控制器中:获取值 true
【解决方案2】:

其中一种方式是广播事件,看看$rootScope.$broadcast()。

例如,在第二个控制器中你可以广播一个事件

$rootScope.$broadcast('hideMenu', {hide: true})

然后在第一个控制器中捕获它

$scope.$on('hideMenu', function (event, data) {
  //code for hiding menu
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多