javascript - 通过 Angular Controller 中的全局变量将信息从一个函数传输到另一个函数

标签 javascript angularjs controller global-variables

我在一个 Angular Controller 中将值从一个函数传递到另一个函数时遇到了一些麻烦。

我有事件

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' 值。

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

请帮我解决这个问题。

最佳答案

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

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

如果不需要此变量可全局访问,只需将 $rootScope.newEvent 更改为 $scope.newEvent。

关于javascript - 通过 Angular Controller 中的全局变量将信息从一个函数传输到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33983404/

相关文章:

javascript - 将 JS 应用程序部署到 Windows 8 获取 resources.pri 访问被拒绝错误

javascript - 当我引用 javascript 文件时是否抛出错误?

javascript - 将属性从父级复制到 Angular Directive(指令)中的内部控件

javascript - Angular Controller 调用指令上的函数是 'bad practice' 吗?

ruby-on-rails - 从 Rails 中的 Controller 检查当前页面?

javascript - 在服务器端获取隐藏字段的空值

javascript - 我可以创建一个不打开滚动条的元素吗?

javascript - 我的自定义指令不起作用

javascript - 使用 AngularJS Satellizer 模块的 Linkedin 身份验证

javascript - 在 Ember 中,每当属性更改时我应该如何调用 Controller 中的函数