【问题标题】:Angular JS pass parameter one controller to anotherAngular JS将参数传递给一个控制器
【发布时间】:2016-02-01 20:25:46
【问题描述】:

我的应用程序 TimelineController 和 ReservationModalController 中有两个控制器。我想从 ReservationModalController 调用 TimelineController 并传递变量值。我正在尝试这样做: 这是我的 app.js

$stateProvider
// Timeline
    .state('timeline', {

    url: '/timeline',
    controller: 'TimelineController',
    templateUrl: 'assets/partials/timeline.html',
    params: {
        operation: 'false'
    }

})

这是时间线控制器

$scope.operation = $state.current.params.operation;

这是 ReservationModalController :

$scope.edit = function() {
  $modalInstance.close();
  $state.go('timeline', {
    operation: 'true'
  });
};

第一次初始化变量。但是当我单击按钮和 ReservationModalController 时,它的方法 edit 被称为 TimelineController 并且它的变量 $scope.operation 不会改变。

请帮我看看有什么问题?

【问题讨论】:

  • 看看这个:stackoverflow.com/questions/24842597/… 我猜你希望你的控制器能够互相交谈。
  • 我知道这个解决方案,但就我而言,我不想使用它。在角度我可以使用 $state.go() 函数但不起作用,所以我很有趣为什么?

标签: javascript angularjs angular-ui-router angular-controller


【解决方案1】:

您应该$broadcast 在这里的控制器之间进行通信,这样它们就不会那么紧密地相互绑定。 $rootScope.$broadcast 正在通过应用程序范围发送事件。 该应用程序的任何子范围都可以使用简单的方法捕获它:$scope.$on()

当您想要到达不是直接父级的范围时发送事件特别有用(例如,两个控制器不是另一个的父级)。

有一个小提琴显示了如何做到这一点:https://jsfiddle.net/VxafF/

【讨论】:

  • 您在我的浏览器中的脚本不起作用。我也知道这个解决方案,但我不想使用它。
【解决方案2】:

您也可以尝试将 TimeLineController 嵌套在 ReservationModalController 中。这样您就可以使用 $scope 继承在控制器之间进行通信。

阅读:http://www.angularjshub.com/examples/basics/nestedcontrollers/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2018-07-14
    相关资源
    最近更新 更多