我知道从.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;
})
我不知道如何修复此代码以使其适用于我。
答案 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