2015-11-10 13 views
5

AngularJS'de sözde 'SEO dostu' URL'leri oluşturmaya çalışıyorum. Yönlendirme için benim script.js ise

Ben:

$routeProvider.html5Mode(true); 

ancak bu sonuçlanır:

app.config(['$routeProvider', 
function($routeProvider) { 
    $routeProvider.html5Mode(true); 
    when('/blog', { 
     templateUrl: 'blog.html', 
     controller: 'BlogController' 
    }). 
    when('/page/ideas', { 
     templateUrl: 'ideas.html', 
     controller: 'IdeasController' 
    }). 
    otherwise({ 
     templateUrl: 'home.html' 
    }); 
}]); 

app.controller("BlogController", function($scope) { 
    $scope.title = 'Blog'; 
}); 

app.controller("IdeasController", function($scope) { 
    $scope.title = 'Ideas'; 
}); 

URL'den # kaldırmak için, ben html5 modunu etkinleştirme am Aşağıdaki hata iletisidir:

Failed to instantiate module exampleApp due to: TypeError: $routeProvider.html5Mode is not a function

Bu sorunla ilgili bir çözümü olan var mı? Bu, içeriğin görüntülemelerden dolayı görüntülenmeyeceği anlamına gelir.

Düzenleme: herkes merak için, çalışma kodudur:

app.config(['$routeProvider', '$locationProvider', 
    function($routeProvider, $locationProvider) { 
     $routeProvider. 
     when('/blog', { 
      templateUrl: 'blog.html', 
      controller: 'BlogController' 
     }). 
     when('/page/ideas', { 
      templateUrl: 'ideas.html', 
      controller: 'IdeasController' 
     }). 
     otherwise({ 
      templateUrl: 'home.html' 
     }); 
     $locationProvider.html5Mode(true); 
    }]); 
+2

(doğru)' $ locationProvider.html5Mode kullanmayı deneyin üzerinde <base href="/"> etiketi eklemek zorunda. html5Mode, $ locationProvider yöntemidir. –

+0

Hmm, şimdi şunu alıyorum: ReferenceError: tanımlı değil VEYA ReferenceError: $ locationProvider tanımlı değil – JWDev

+0

$ routeProvider'ı $ routeProvider –

cevap

7

html5mode yöntem $locationProvider sağlayıcıya orada mevcuttur. config aşamasında

Sen içermelidir $locationProvider sonra # ücretsiz URL için html5mode etkinleştirmek yapılandırma bloğunda & bu bağımlılık kullanılabilir hale getirmek için. yerine `;

app.config(['$routeProvider', '$locationProvider', 
function($routeProvider, $locationProvider) { 

    //$routerProvider code here 

    $locationProvider.html5Mode(true); 

}]); 

Kod Ek olarak index.html sayfa

+1

ile yaptığınız şekilde enjekte etmeniz gerekiyor Bu mükemmel! Teşekkür ederim. – JWDev

+0

@JWTomic Size yardımcı olmaktan memnunum ... Teşekkürler :) –

+1

$ locationProvider'ın yapılandırılması, hashtag'in uygulama URL'sinden kaldırılmasına rağmen uygulama düzgün yüklenmeyecek. Bunu çözmek için, dizin sayfasının baş bölümüne bir temel etiket eklemeniz gerekir. '