我在一个 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/