Angular.js跨controller实现参数传递的两种方法

在前端开发中,有时候需要在不同的controller之间传递参数。Angular.js作为一款流行的前端框架,提供了多种方法来实现参数传递。本文将介绍Angular.js跨controller实现参数传递的两种方法,并附带示例代码和学习指导。

方法一:$rootScope

Angular.js中的$rootScope是全局变量,可以在任何controller中访问。因此,我们可以使用$rootScope来实现参数的跨controller传递。

步骤

  1. 在需要传递参数的controller中,定义一个属性并赋值给$rootScope,如下所示:

    ----------------------- -------------------- -
      ---------------- - --------
    ---
  2. 在另一个controller中,访问$rootScope中定义的属性,如下所示:

    ----------------------- -------------------- -
      ------------------------------ -- -- -----
    ---

示例代码

--------- -----
----- ---------------
------
  ----- ----------------
  ------------------------
  ------- -----------------------------------------------------------------------
-------
------
---- ----------------------
  ------- ------------------------ -----------
------
---- ----------------------
  ----------------
------
--------
  --- --- - ----------------------- ----
  ----------------------- -------------------- -
    ---------------- - --------
    ---------------- - ---------- -
      -----------------------
    --
  ---
  ----------------------- -------------------- -
    ------------------------------ -- -- -----
  ---
---------
-------
-------

学习指导

使用$rootScope传递参数的优点是简单易用,缺点是容易造成全局变量污染。因此,在实际开发中,建议谨慎使用。

方法二:$broadcast/$on

除了$rootScope,Angular.js还提供了另一种跨controller传递参数的方法,即$broadcast和$on。

步骤

  1. 在需要传递参数的controller中,使用$rootScope.$broadcast广播事件,并传递参数,如下所示:

    ----------------------- -------------------- -
      ---------------------------------- ------- ----------
    ---
  2. 在另一个controller中,使用$rootScope.$on监听事件,并接收参数,如下所示:

    ----------------------- -------------------- -
      --------------------------- --------------- ----- -
        ------------------------ -- -- -----
      ---
    ---

示例代码

--------- -----
----- ---------------
------
  ----- ----------------
  ------------------------
  ------- -----------------------------------------------------------------------
-------
------
---- ----------------------
  ------- ------------------------ -----------
------
---- ----------------------
  ----------------
------
--------
  --- --- - ----------------------- ----
  ----------------------- -------------------- -
    ---------------- - ---------- -
      -----------------------
      ---------------------------------- ------- ----------
    --
  ---
  ----------------------- -------------------- -
    --------------------------- --------------- ----- -
      ------------------------ -- -- -----
      ---------------- - -----------
    ---
  ---
---------
-------
-------

学习指导

使用$broadcast/$on传递参数的优点是灵活性高,可以实现多个controller之间的参数传递。缺点是需要注意事件命名的唯一性,并且在销毁controller时需要手

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/1937