📜  如何在AngularJS中的控制器之间共享数据?

📅  最后修改于: 2021-05-13 20:22:12             🧑  作者: Mango

任务是使用AngularJS在两个或多个控制器之间共享数据变量。有很多程序可以实现这一目标。在这里,我们将讨论最受欢迎的。

方法:为了在AngularJS中的控制器之间共享数据,我们有两种主要情况:

  • 在父级和子级之间共享数据:这里,数据共享可以简单地通过使用控制器继承来完成,因为子级控制器的作用域是从父级控制器的作用域继承而来的。
  • 在控制器之间共享数据而无需关联:在这里,可以通过几种方式完成数据共享,其中一些方式是:

    通过使用rootScope变量:我们可以使用rootScope变量来保存共享数据,然后可以从任何控制器中引用它。在这里,在Angular应用程序启动时,我们使用一些值初始化了rootScope变量,然后从每个控制器中引用它,从而将两个控制器中的作用域变量绑定到rootScope变量。

    • 例子:
      
      
        
      
          
              Angular JS sharing data using rootScope
          
          
      
        
      
          

                GeeksforGeeks      

             
              
                  

      First controller

                  

      {{firstvalue}}

              
              
                  

      Second controller

                  

      {{secondvalue}}

              
          
                                     
    • 输出:

    通过使用工厂或服务: $ rootscope方法不适合用于数据传输或共享数据,因为它具有可用于整个应用程序的全局范围。因此,我们使用另一种方法来创建工厂或服务来保存共享数据。 AngularJS工厂和服务是JS函数,它们执行包含方法和属性的特定任务,并且可以使用依赖项注入将其注入其他组件(例如,控制器)中。这样,我们可以在工厂中定义共享变量,将其注入两个控制器中,从而将两个控制器中的作用域变量绑定到该工厂数据。

    • 例子:
      
      
        
      
          
              Angular JS sharing data using factory
          
          
      
        
      
          

                GeeksforGeeks      

             
              
                               
      Input in first controller is : {{value.name}}         
              
              
                  Input in second controller is : {{value.name}}         
          
                                     
    • 输出: