ui-router通过URL地址改变状态?

时间:2014-09-24 01:03:09

标签: javascript angularjs angular-ui-router

当我只有完整的网址路径时,我无法转换到其他视图状态。 ui-router说要使用$state.transitionTo$state.go,但那些需要州名。

我尝试使用$location.url(path)更改当前网址,但没有任何反应。

$location.url(path)是正确的方式,我的设置有问题还是有其他方法可以做到?

以下是我对主页的配置:

$stateProvider.state(
    {
        name:       'home',
        url:        '^/',
        templateUrl: "/home.html"
    }
);

以下是该应用的配置。

cgTag.App.Config.Config = function($httpProvider, $locationProvider, $sce)
{
    // Let CakePHP see $http requests as AJAX
    $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
    // use HTML5 non-hash URLs
    $locationProvider.html5Mode(true);
    $locationProvider.hashPrefix('!');

    // add all the CDN domains to the white list so that URLs are not blocked by Angular.
    var cdn = cgTag.AppData["Domain"].replace(/^www\./, "http://s*.") + "/**";
    $sce.resourceUrlWhitelist(['self', cdn]);
};
cgTag.Angular.config(['$httpProvider', '$locationProvider', '$sceDelegateProvider', cgTag.App.Config.Config]);

如果当前浏览器网址为http://www.cgtag.com/movies,则调用$location.url("/")应该转到主页,但没有任何反应。

2 个答案:

答案 0 :(得分:1)

我需要在致电$scope.$apply()后致电$location.url(path)

可能是因为代码在keydown事件处理程序中。

答案 1 :(得分:0)

您需要使用$location.path()代替$location.url()