angularjs基于条件case语句的路由

时间:2014-09-25 05:05:59

标签: angularjs angularjs-routing

我对angularJS视图有不同的要求。 我有一辆车在运行,个人可以用0 $结账(一些免费礼品) 因此,对于付款页面视图,我们提出了不同的想法。

if($cart_total>0){
   show payment page view;
} else {
   show confirmation page view;
}

那么我如何在angularJS路由中做同样的事情。我的角度路由看起来像这样

as.config(function($routeProvider, $httpProvider) {
    $routeProvider
            .when('/index', {templateUrl: 'partials/index.html', controller: 'IndexListCtrl'})
            .when('/shop/:id', {templateUrl: 'partials/shop.html', controller: 'ShopCtrl'})
            .when('/payment/:id', {templateUrl: 'partials/payment.html', controller: 'PaymentCtrl'})
            .when('/confirm', {templateUrl: 'partials/confirm.html', controller: 'ConfirmCtrl'})
            .otherwise({redirectTo: '/index'});

});

所以我只需要在cart_total>时显示付款视图0其他显示确认视图。

请帮助!!!

2 个答案:

答案 0 :(得分:1)

我认为你必须使用$route service events

PS。这是similar question

答案 1 :(得分:0)

首先通过声明一个类似的常量为路由添加一个定义。

 angular.module("App")
.constant('Cart', {
  showCart : 'true'
});
.when('/payment/:id',{
    templateUrl:'',
    access:Cart.showCart
})

然后你必须选择。首先在run函数中检查'$rootScope.$on('$locationChangeStart'事件,在其中你可以通过var location = $location.path(); var route = $route.routes[location];访问路由,然后通过route.access访问用户角色;那么你可以删除或添加Html组件。或者你可以制作一个简单的指令,用于检查相同的路径并使用链接功能来删除或添加Html组件