如何将$ ionicModal放在.factory中使用它?

时间:2018-02-21 20:59:40

标签: angularjs

我知道从.factory我不能使用$scope。如何从控制器打开弹出窗口?

在我的控制器中,我需要:

testigosElectoralesApp.controller('almacenarFotoController', function($scope,popup) {
 poupup.openModalAlmacenamientoErroneo ()
})

这是我的代码

factory("poupup", function($ionicModal,$rootScope) 
{
 var oPopup = {}

 $ionicModal.fromTemplateUrl('templates/modals/almacenamientoErroneo.html', {
  scope: $scope,
  animation: 'slide-in-up'
}).then(function(modal) {
  $scope.modalAlmacenamientoErroneo = modal;
});
$scope.openModalAlmacenamientoErroneo = function() {
  $scope.modalAlmacenamientoErroneo.show();
};
$scope.closeModalAlmacenamientoErroneo = function() {
  $scope.modalAlmacenamientoErroneo.hide();
};

 return oPopup;
})

我不知道如何修复此代码以使其适用于我。

1 个答案:

答案 0 :(得分:0)

您可能不希望在服务/工厂内调用范围。但如果您真的想要,可以将$ rootScope添加到服务/工厂和控制器。然后在服务/工厂中使用$ rootScope。$ emit或$ rootScope。$ broadcast。

在$ scope存在的控制器中,您可以添加:

$rootScope.$emit('scopeFunction');

在服务/工厂中,您可以致电:

$rootScope.$broadcast('scopeFunction');

testigosElectoralesApp.controller('almacenarFotoController', function($scope,popup) {
 poupup.openModalAlmacenamientoErroneo();
})

或者您可以将项目存储在$ rootScope中。虽然我建议不要过度使用$ rootScope。

******************* EDIT *****************

能够使用它:

factory("poupup", function($ionicModal,$rootScope) {
    var oPopup = {
        openModalAlmacenamientoErroneo: function(){
            //Add function here
        }
    };
    return oPopup;
})

你需要这个:

willSet