Prapemuat Global Ionic / Angular.js

Saya baru mengenal sudut dan ionik. Pada dasarnya menghabiskan sekitar 2 jam untuk ini.

Ingin tahu apakah seseorang dapat mengarahkan saya ke arah yang benar di sini.

Pada dasarnya di controller.js saya memuat json jarak jauh melalui $http.

Saya ingin menunjukkan preloader pada setiap pengontrol yang memuat konten jarak jauh.

    .controller('InformationCtrl', function ($scope, $http, $ionicLoading) {
    $scope.show = function () {
        $ionicLoading.show({
            template: '<p>Loading...</p><ion-spinner></ion-spinner>'
        });
    };
    $scope.hide = function () {
        $ionicLoading.hide();
    };
    $scope.show($ionicLoading);
    $http.get($scope.base_url + "information")
        .then(function (response) {
            $scope.hide($ionicLoading);
            $scope.information = response.data;
        }, function errorCallback(response) {
            $scope.hide($ionicLoading);
            alert("error loading content");
        });
})

Saya bertanya-tanya, bukankah ada cara yang lebih mudah untuk membuat fungsi global preloaderShow() dan preloaderHide() ? Sepertinya banyak kode yang harus disertakan di bawah ini di setiap pengontrol dan bagaimana jika saya ingin memodifikasi spinner nanti, saya harus memperbarui setiap baris kode?

    .controller('InformationCtrl', function ($scope, $http, $ionicLoading) {
    $scope.show = function () {
        $ionicLoading.show({
            template: '<p>Loading...</p><ion-spinner></ion-spinner>'
        });
    };
    $scope.hide = function () {
        $ionicLoading.hide();
    };

Saya baru saja menggunakan aplikasi starter jadi mungkin saya melewatkan sesuatu, saya melihat sesuatu tentang penggunaan Layanan, contoh atau saran singkat apa pun akan dihargai.


person limit    schedule 15.05.2016    source sumber


Jawaban (1)


Anda dapat dengan mudah mengabstraksikannya ke layanan

angular.module('app').factory('loader', function loaderFactory ($ionicLoading) {
  return {
    show: function () {
      $ionicLoading.show({
        template: '<p>Loading...</p><ion-spinner></ion-spinner>'
      });
    },
    hide: function () {
      $ionicLoading.hide();
    };
  }  
});

lalu di dalam kamu pengontrol

angular.module('app').controller('InformationCtrl', function ($scope, $http, loader) {
  loader.show();
  $http.get($scope.base_url + "information")
  .then(function (response) {
    $scope.information = response.data;
  }, function errorCallback(response) {
    alert("error loading content");
  })
  .finally(function () {
    loader.hide();
  });
}
person Dmitriy Nevzorov    schedule 15.05.2016