-1

私の要件に従って、アプリを開くときにポップアップメッセージを表示したいと思います。アラートを使用できません。

angular.module('starter', ['ionic'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function($scope, $ionicPopup, $timeout) {
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }

	 $scope.showAlert = function() {
	   var alertPopup = $ionicPopup.alert({
		 title: 'Don\'t eat that!',
		 template: 'It might taste good'
	   });

	   alertPopup.then(function(res) {
		 console.log('Thank you for not eating my delicious ice cream cone');
	   });
	};

	if (window.cordova) {
		cordova.plugins.diagnostic.isLocationEnabled(function(enabled) {
			if(!enabled){
				alert("Location is not enabled");
				cordova.plugins.diagnostic.switchToLocationSettings();
			}
		}, function(error) {
			alert("The following error occurred: " + error);
		});
	}
  });
})

しかし、これは「$scope is undefined」というエラーを出しています。

4

2 に答える 2

2

$scoperun 関数では提供されません。したがって、関数を実行するためにのみ注入でき$rootScopeます。を に置き換える$scope$rootScope、うまくいきます。

.run(function($ionicPlatform, $rootScope, $ionicPopup, $timeout) {
    $ionicPlatform.ready(function() {

    // Code here
    ....

    $rootScope.showAlert = function() {
       var alertPopup = $ionicPopup.alert({
         title: 'Don\'t eat that!',
         template: 'It might taste good'
       });

       alertPopup.then(function(res) {
         console.log('Thank you for not eating my delicious ice cream cone');
       });
    };

    // Code here
    ....
});

<button ng-click="$root.showAlert()">
于 2016-10-22T03:36:09.880 に答える
1
angular.module('starter', ['ionic'])

.run(function($ionicPlatform, $rootScope, $ionicPopup, $timeout) {
  $ionicPlatform.ready(function() {
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }

     $rootScope.showAlert = function() {
       var alertPopup = $ionicPopup.alert({
         title: 'Don\'t eat that!',
         template: 'It might taste good'
       });

       alertPopup.then(function(res) {
         console.log('Thank you for not eating my delicious ice cream cone');
       });
    };

    if (window.cordova) {
        cordova.plugins.diagnostic.isLocationEnabled(function(enabled) {
            if(!enabled){
                alert("Location is not enabled");
                cordova.plugins.diagnostic.switchToLocationSettings();
            }
        }, function(error) {
            alert("The following error occurred: " + error);
        });
    }
  });
})

コードにいくつかの変更を加えました。これが問題の解決に役立つことを願っています。

于 2016-10-22T07:02:04.693 に答える