2

我想使用 $locationProvider.html5Mode(true); 删除 angularJs 中的 # hash 但这会导致所有 URL 都通过 angularJs 路由。我该如何设置它,以便只有一些预定义的 URL 通过 angularJs 路由,而其余的仍然使用 Laravel。

代码是:

    app.config(['$routeProvider', '$locationProvider',
        function($routeProvider, $locationProvider) {
            $routeProvider
            .when('/alls', {
                templateUrl: app.site_url + 'ang/index',
                controller: 'MainCtrl'
            })
            .when('/alls/page/:page', {
                templateUrl: app.site_url + 'ang/index',
                controller: 'MainCtrl'
            })
            .otherwise({
                redirectTo: '/alls'
            });
            $locationProvider.html5Mode(true);
        }
    ]);

所以如果不是 /alls 或 /alls/page/,Laravel 应该处理路由。

4

1 回答 1

3

我已经尝试<base href=".">按照以下说明使用: http: //docs.angularjs.org/guide/dev_guide.services .$location。但它不起作用。我终于让它工作了。这是解决方案:

 app.config(['$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
        $routeProvider
        .when('/alls', {
            templateUrl: app.site_url + 'ang/index',
            controller: 'MainCtrl'
        })
        .when('/alls/page/:page', {
            templateUrl: app.site_url + 'ang/index',
            controller: 'MainCtrl'
        })
        .otherwise({
            templateUrl: app.site_url + 'ang/index',
             controller: function(){
                window.location.href = window.location.href;
            }               
        });           
        $locationProvider.html5Mode(true);
    }
]);

希望它会帮助别人。

于 2013-10-13T13:48:42.213 回答