AngulaJS 在 ngDialogProvider 的配置阶段使用 $rootScope,或者在 运行 阶段使用 ngDialogProvider
AngulaJS using $rootScope in config phase for ngDialogProvider, or using ngDialogProvider in run phase
我知道您不能将 $rootScope 注入到应用程序的 config 阶段,并且我知道您可以将 $rootScope 注入到 运行 阶段,但是 ngDialogProvider 没有在 运行 阶段注入...
我正在使用 ngDialog,它有一个 ngDialogProvider,我可以在其中设置所有 ngDailog 的默认值(我有很多)
我需要在 rootScope 上设置一个标志以防止在 ngDailog 打开时进行导航。
如果我们不能在配置阶段注入 rootScope,我该如何实现?
.config(['$rootScope','ngDialogProvider', function ($rootScope,ngDialogProvider) {
// Inject Error: $rootScope cannot be injected here
ngDialogProvider.setDefaults({
onOpenCallback: function() {
$rootScope.preventNavigation = true;
},
preCloseCallback: function() {
$rootScope.preventNavigation = false;
}
});
}])
您应该在 .run
中执行此操作
.run(['$rootScope','ngDialogProvider', function ($rootScope,ngDialogProvider) {
// Inject Error: $rootScope cannot be injected here
ngDialogProvider.setDefaults({
onOpenCallback: function() {
$rootScope.preventNavigation = true;
},
preCloseCallback: function() {
$rootScope.preventNavigation = false;
}
});
}])
ngDialogProvider is available in .config phase. Need to check if it is available on .run phase or not.
编辑 1:您可以使用全局变量:
app.constant(‘preventNavigation’,false or true);
.config(['ngDialogProvider','preCloseCallback', function (ngDialogProvider,preCloseCallback) {
ngDialogProvider.setDefaults({
onOpenCallback: function() {
preventNavigation = true;
},
preCloseCallback: function() {
preventNavigation = false;
}
});
}])
constant should never be changed (though it is still possible to
change it programmatically in Angular 1.x).
我知道您不能将 $rootScope 注入到应用程序的 config 阶段,并且我知道您可以将 $rootScope 注入到 运行 阶段,但是 ngDialogProvider 没有在 运行 阶段注入...
我正在使用 ngDialog,它有一个 ngDialogProvider,我可以在其中设置所有 ngDailog 的默认值(我有很多)
我需要在 rootScope 上设置一个标志以防止在 ngDailog 打开时进行导航。
如果我们不能在配置阶段注入 rootScope,我该如何实现?
.config(['$rootScope','ngDialogProvider', function ($rootScope,ngDialogProvider) {
// Inject Error: $rootScope cannot be injected here
ngDialogProvider.setDefaults({
onOpenCallback: function() {
$rootScope.preventNavigation = true;
},
preCloseCallback: function() {
$rootScope.preventNavigation = false;
}
});
}])
您应该在 .run
.run(['$rootScope','ngDialogProvider', function ($rootScope,ngDialogProvider) {
// Inject Error: $rootScope cannot be injected here
ngDialogProvider.setDefaults({
onOpenCallback: function() {
$rootScope.preventNavigation = true;
},
preCloseCallback: function() {
$rootScope.preventNavigation = false;
}
});
}])
ngDialogProvider is available in .config phase. Need to check if it is available on .run phase or not.
编辑 1:您可以使用全局变量:
app.constant(‘preventNavigation’,false or true);
.config(['ngDialogProvider','preCloseCallback', function (ngDialogProvider,preCloseCallback) {
ngDialogProvider.setDefaults({
onOpenCallback: function() {
preventNavigation = true;
},
preCloseCallback: function() {
preventNavigation = false;
}
});
}])
constant should never be changed (though it is still possible to change it programmatically in Angular 1.x).