UI-Router使用站点部分内的路由

时间:2014-04-30 15:03:59

标签: angularjs angular-ui-router

我正在构建的网站已经使用MVC构建了URL。例如,/ Account转到页面,/ Customers转到页面,/ Quotes转到页面。在/ Quotes页面上,我有一个多步向导,我想在其上使用Ui-Routing。请参阅下面的app.js,这一切都有效。

因此我的网址变为/ Quotes#newmodel,/ Quotes#customer等。向导的每个步骤都有不同的#{value}。问题在于.otherwise会影响网站的所有其他区域。所以如果我要去/ Account,我会得到url / Account#向导。我不希望这种情况发生在/ Quotes页面以外的任何地方。有什么我可以做的URL匹配,所以我可以删除.otherwise?

'use strict';

var myApp = angular.module('myApp', ['ui.router']);

myApp.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise("/wizard");

    $stateProvider
        .state('wizard', {
            url: '/wizard',
            templateUrl: 'Scripts/templates/wizardLayout.html',
            controller: 'wizardNavigationCtrl'
        })
        .state('wizard.newmodel', {
            url: '/newmodel',
            templateUrl: 'Scripts/templates/wizardModel.html',
            controller: 'wizardModelCtrl'
        })
        .state('wizard.other', {
            url: '/other',
            templateUrl: 'Scripts/templates/wizardOther.html',
            controller: 'wizardOtherCtrl'
        })
        .state('wizard.customer', {
            url: '/customer',
            templateUrl: 'Scripts/templates/wizardCustomer.html',
            controller: 'wizardCustomerCtrl'
        })
        .state('wizard.shipping', {
            url: '/shipping',
            templateUrl: 'Scripts/templates/wizardShipping.html',
            controller: 'wizardShippingCtrl'
        })
        .state('wizard.review', {
            url: '/review',
            templateUrl: 'Scripts/templates/wizardReview.html',
            controller: 'wizardReviewCtrl'
        });
    }]);

我也对如何使路由加载布局感兴趣,然后默认情况下转到wizard.newmodel路由(尽管这可能是一个单独的问题)。基本上与我点击:

时的行为相同
<a sref-ui=".newmodel">

1 个答案:

答案 0 :(得分:0)

我删除了app.js中的$ urlRouterProvider.otherwise(“/ wizard”)。 相反,我在main / Quote页面添加了一个控制器,将$ location.url重定向到'/ wizard'。以下是代码。

myApp.controller('wizardCtrl', ['$location', function ($location) {
    $location.url('wizard')
}])