无法将数据发送到另一个控制器AngularJS

时间:2018-11-26 15:17:11

标签: angularjs json controller

请更新帮助:

尝试了您的建议,问题是当我尝试将值传递给另一个“模块”时。尝试创建服务,但功能不起作用,也许我错过了一些东西。 使用rootScope制作示例:

var informes = angular.module('informes', ['angular-drupal', 'ui.bootstrap']);

informes.controller('InformesCtrl', ['drupal', '$rootScope', '$scope', '$http', 'InformesFtry', function(drupal, $rootScope, $scope, $http, InformesFtry) {

       $rootScope.nodeID = function(item){
         var item = "hi";
         console.log(item);
       }

}]);

控制台hi

它在第一个模块中有效,但是...

在其他具有不同页面的模块中...

var nodeInformes = angular.module('node-informes', ['informes']);

nodeInformes.controller('NodeInformesCtrl', ['drupal', '$rootScope', '$scope', '$http', 'InformesFtry', function(drupal, $rootScope, $scope, $http, InformesFtry) {

          $scope.nodeID2 = $rootScope.nodeID(item);
          console.log($scope.nodeID2);

}]);

控制台:item is Undefined

我试图弄清楚如何将一个函数传递给另一个模块,但这似乎是不可能的。我没有尝试使用相同的模块,但是如果控制器是第一个控制器的子控制器,则它可以工作。

我真的很感谢您可以为我提供的帮助,该帮助将带有参数的函数传递给具有另一个控制器的另一个模块。我正在尝试学习。谢谢!!!

编辑:如果我将firstcontroller添加为依赖项,它将给我未知提供程序...对不起,我的错误。

1 个答案:

答案 0 :(得分:0)

在Angular JS中,控制器可以通过三种方式与其他控制器进行通信,而任何其他方法都可能引起麻烦:

使用服务

将服务用作控制器之间的中介:

function MyService() {
  this.MyObject = {};
}

function ctrl1(MyService) {
  Myservice.MyObject = {
   someData: "someValue"
  };
}

function ctrl2(MyService) {
  $scope.someValue = MyService.MyObject.someData;
}

使用事件系统

  function ctrl1($rootScope) {
  $rootScope.$broadcast("my-event", {someData: "someValue"});
}

function ctrl2($scope) {
  $scope.$on("my-event", function(event, params) {
    $scope.someData = params.someData;
  });
}

范围继承

 <div ng-controller="ctrl1">
   <div ng-controller="ctrl2">
   </div>
 </div>

function ctrl1($scope) {
  $scope.someData = "someValue";
}

function ctrl2($scope) {
  console.log($scope.$parent.someData); //"someValue"
}