2015-03-18 21 views
8

Tôi có ứng dụng Angular v1.3, sử dụng Angular ui-router v0.2.13 cho tất cả định tuyến. Trang web hoạt động tốt trên tất cả các trình duyệt, bao gồm IE 10 và IE 11, nhưng không phải IE 9 (chúng tôi đã quyết định không theo đuổi IE8, mà tôi hiểu là không được hỗ trợ bởi v1.3, dù sao). Mặc dù có những nỗ lực tốt nhất của tôi, IE 9 vẫn tiếp tục giải quyết tuyến đường của tôi $stateProvider'sotherwise (được đặt thành /*path, một thủ phạm có thể xảy ra, vì vậy tôi đã tắt tuyến đường đó cho mục đích thử nghiệm).Góc giao diện người dùng-Router Không giải quyết với Internet Explorer 9

Trong một nỗ lực để có được bất kỳ tuyến đường khác để giải quyết, tôi đã cố gắng thiết lập $locationProvider.html5Mode(false), sửa đổi $locationProvider.hashPrefix, thay đổi <base href="/" /> đến các URL khác nhau, bao gồm <base href="/#!"/>, và tôi đã thậm chí bao gồm xmlns:ng="http://angularjs.org" trong thẻ <html> cho biện pháp tốt. Không có vấn đề gì tôi cố gắng, IE 9 liên tục cố gắng để giải quyết tuyến đường của tôi otherwise, hoặc không có gì nếu tuyến đường đó bị vô hiệu hóa. BTW, URL tuyến đường trang chủ của tôi được đặt thành /.

Tôi đã cập nhật nhãn cầu của mình bằng mã với thời hạn khởi chạy lờ mờ, vì vậy tôi sẽ là người đầu tiên thừa nhận rằng tôi có khả năng nhìn thấy điều gì đó hiển nhiên. Bất cứ ai có thể cung cấp bất kỳ lời khuyên hay thủ thuật nào khác để gây ra ui-router để giải quyết đúng cách trong IE 9?

Trả lời

0

Chúng tôi sử dụng một cái gì đó như sau:

<!DOCTYPE html> 
    <html lang="fr" xmlns="http://www.w3.org/1999/xhtml" ng-csp xml:lang="fr-CA"> 

//... 
var app = angular.module('YourApp', [...]); 
angular.bootstrap(document, ['YourApp'], {strictDi: true}) 

//... 
    angular.module('YourApp').config(['$stateProvider', '$urlRouterProvider', '$locationProvider', 
    function ($stateProvider, $urlRouterProvider, $locationProvider) { 
    $locationProvider.html5Mode(false); 
    $locationProvider.hashPrefix('!'); 

    $urlRouterProvider.otherwise('/'); 

    $stateProvider 
     .state('home', { 
     url: '/', 
     cache: false, 
     controller: 'HomeController as vm' 
     }) 
     .state('anon', { 
     url: '/info', 
     controller: 'AnonController as vm' 
     }) 

// vv ...

0

Đối với tôi, các tuyến đường IE9 chính xác cho các url băm, /#/example, nhưng quý khách đến thăm / sẽ giải quyết cho các tuyến đường khác. Tôi đã làm việc xung quanh điều này bằng cách sử dụng một chức năng cho nếu không, và kiểm tra các url trong đó.

$urlRouterProvider.otherwise(function($injector){ 
    var state = $injector.get('$state'); 
    var location = $injector.get('$location'); 
    if (!location.url()) { 
     // handle HTML5 fallback/IE9 when url has no hash 
     return state.go('home'); 
    } 
    state.go('404'); 
}); 
Các vấn đề liên quan