2014-07-08 21 views
13

Angular UI-Router'ı bir çözüm işleviyle kullanıyorum, ancak özüm işlevini küçültürken, tüm işlev kırılıyor çünkü çözümleme işlevi sözdizimi, küçültme için doğru değil. Belirtilen here olarak belirtilen String-Injection olması gerekir. Sadece nasıl yazacağımı bilmiyorum. Baska öneri?Açısal UI Yönlendirici Minification Hatası - Dize Enjeksiyon Tabanlı Olmak İçin Sözdizimini Çözebilir miyim?

// Resolves 
var checkAuthentication = function($q, $location, $rootScope, Users) { 
    if ($rootScope.user) return true; 
    if (!$rootScope.user) { 
     var deferred = $q.defer(); 
     Users.get(null, function(user) { 
      if (!user) { 
       window.location = '/'; 
       return false; 
      } 
      console.log('User fetched: ', user); 
      $rootScope.user = user; 
      deferred.resolve(); 
     }, function() { 
      window.location = '/'; 
      return false; 
     }); 
     return deferred.promise; 
    } 
}; 

// Routes 
angular.module('Dashboard').config(['$stateProvider', '$urlRouterProvider', 
    function($stateProvider, $urlRouterProvider) { 
     // For any unmatched url, redirect to '/' 
     $urlRouterProvider.otherwise('/dashboard'); 
     // Now set up the states 
     $stateProvider 
      .state('dashboard', { 
       url: '/dashboard', 
       templateUrl: 'views/content/dashboard.html', 
       resolve: { 
        checkAuthentication: checkAuthentication 
       } 
      }) 
+0

".module (" Gösterge Tablosu ")' nızın geri kalanı eksik - func - kapanış parantezlerini kaçırıyor ve npt – tymeJV

+1

nu .config ile aynı şekilde iletmez miydiniz? bir dizi olarak? –

+0

tymeJV - Referans için .config işlevini koydum, bu yüzden sorun değil. Sorun yalnızca checkAuthentication işlevinin sözdizimi ile ilgilidir. – ac360

cevap

24

normalde bu yapardın yolu kararlılığının bir dizi ileterek geçerli: Bunu akılda tutarak

resolve: { 
    welcome: ['$q', function ($q) { 
     var def = $q.defer(); 
     setTimeout(function() { 
      def.resolve("Hello World!"); 
     },500); 
     return def.promise; 
    }] 
} 

, bu gibi tanımlayabilirsiniz var:

var welcome = ['$q', function ($q) { 
    var def = $q.defer(); 
    setTimeout(function() { 
     def.resolve("Hello World!"); 
    },500); 
    return def.promise; 
}] 

ama bu elbette gerçekten yeniden kullanılabilir değil, bu yüzden bu noktada bir servise gitmeyi öneririm.

+2

"(...) tabiki gerçekten yeniden kullanılabilir değil, bu yüzden bu noktada bir servise gitmeyi öneririm." - Benim düşüncelerim tam. – Gamb

+0

Benim için çalışıyor. Teşekkür ederim :) – ac360

İlgili konular