Angular JS将参数传递给另一个控制器

时间:2016-02-01 20:25:47

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

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

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

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

})

这是TimelineController

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

这是ReservationModalController:

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

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

请帮我解决错误?

2 个答案:

答案 0 :(得分:0)

可能你应该$broadcast在这里的控制器之间进行通信,这样它们就不会彼此紧密联系。 $rootScope.$broadcast正在通过应用程序范围发送事件。 该应用程序的任何子级范围都可以使用简单的$scope.$on()来捕获它。

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

有一个小提示,说明如何执行此操作:https://jsfiddle.net/VxafF/

答案 1 :(得分:0)

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

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