在一个角度控制器中将值从一个函数传递到另一个函数时,我遇到了一些麻烦。
我有活动
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。