在一个角度控制器中将值从一个函数传递到另一个函数时,我遇到了一些麻烦。

我有活动

onTimeRangeSelected: function (args) {
          $scope.dayPilotCal.clearSelection();
          $scope.createNewEventModalWindow(args);
      },


事件调用功能

 $scope.createNewEventModalWindow = function(args)
    {
      console.log('create new event dialog');
      $rootScope.newEvent.start = args.start.value;
      console.log($rootScope.newEvent.start);
      ngDialog.open({
          ......
      });

    }


比我处理对话框确认按钮单击事件

 <button
      type="button"
      class="ngdialog-button ngdialog-button-primary"
      ng-click="btnCreateEventClicked()"
    >Create</button>


和通话功能

$scope.btnCreateEventClicked = function(){
  console.log('btn create event clicked');
  ngDialog.close();

  console.log($rootScope.newEvent.start);
};


所以我的问题-在第一种情况下,console.log($rootScope.newEvent.start);打印到控制台实际日期。但是在第二个功能console.log($rootScope.newEvent.start);中,打印到控制台'undefined'的值。

所有代码都在同一控制器中。在控制器的第一行中,我定义了全局变量$rootScope.newEvent={};

请帮助我解决这个问题。

最佳答案

全局变量使测试代码变得非常困难。因为任何功能都可以访问全局范围。在您的示例中,我假设它们是更改$ rootScope.newEvent的代码的另一部分。

如果此变量必须全局可用,我建议使用服务。

如果他们不需要全局访问此var,则只需将$ rootScope.newEvent更改为$ scope.newEvent。

09-08 02:38