【问题标题】:Unable to send data to another controller AngularJS无法将数据发送到另一个控制器AngularJS
【发布时间】:2018-11-26 15:17:10
【问题描述】:

请帮助更新:

尝试了您的建议,问题是当我尝试将值传递给另一个“模块”时。尝试创建服务但该功能不起作用,也许我错过了一些东西。 使用 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

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

我真的很感激您可以提供的任何帮助,以将带有参数的函数传递给带有另一个控制器的另一个模块。我正在努力学习这个。谢谢!!!

编辑:如果我将第一个控制器添加为依赖项,它会给我未知的提供者......对不起我的错误。

【问题讨论】:

    标签: angularjs json controller


    【解决方案1】:

    在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"
    }
    

    【讨论】:

    • 模块相同时可以使用...但我想使用另一个模块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 2021-12-28
    相关资源
    最近更新 更多