Angularjs 基于条件的角度布线
我一直在试图找到一种方法来实现角度路由,该路由基于条件,而不是用户单击的链接 路线1->视图1 路由2->视图2 为了增加复杂性,根据服务结果评估病情本身。我正在为我的购物车结账应用程序检索一组项目。如果项目数>0,我需要购物车路由到view1。如果为0,则为另一条路线 如果(itemListService.getItems().length>0)-->route1 else-->路由2 因此,出现的复杂性是,路由必须等到服务结果得到评估之后,才能加载相应的视图。换句话说,服务承诺必须得到解决 我在下面的帖子中发现,有人建议在routeprovider中使用'resolve'配置属性,但这只解决了等待服务响应的问题。我不确定它是否满足基于服务响应的检查条件 有人能帮我吗?Angularjs 基于条件的角度布线,angularjs,angularjs-routing,Angularjs,Angularjs Routing,我一直在试图找到一种方法来实现角度路由,该路由基于条件,而不是用户单击的链接 路线1->视图1 路由2->视图2 为了增加复杂性,根据服务结果评估病情本身。我正在为我的购物车结账应用程序检索一组项目。如果项目数>0,我需要购物车路由到view1。如果为0,则为另一条路线 如果(itemListService.getItems().length>0)-->route1 else-->路由2 因此,出现的复杂性是,路由必须等到服务结果得到评估之后,才能加载相应的视图。换句话说,服务承诺必须得到解决
ui路由器能否比routeProvider更好地实现这一点?是的,使用ui-router可以轻松实现。例如,创建四种状态:仪表板状态,它将您链接到冲突解决程序状态。根据服务的数据输入冲突解决程序状态后,您可以重定向到相应的状态。这是在冲突解决程序状态的钩子的帮助下完成的 在“砰砰”的一声中
var myapp = angular.module('myapp', ["ui.router"]);
myapp.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/dashboard")
$stateProvider
.state('dashboard', {
url: '/dashboard',
templateUrl: 'dashboard.html'
}).state('parent', {
url: '/parent',
resolve: {
stateToGo: function(service) {
if (service.getItems().length > 0) {
return 'child1';
} else {
return 'child2';
}
}
},
onEnter: function(stateToGo, $state) {
$state.go(stateToGo);
}
})
.state('child1', {
templateUrl: 'child1.html',
resolve: {
service: function(service) {
return service;
}
},
controller: function($scope, service) {
console.log(service.getItems());
service.removeItem();
console.log(service.getItems());
}
}).state('child2', {
templateUrl: 'child2.html'
});
});
myapp.factory('service', [function() {
var items = [1, 2];
return {
getItems: function() {
return items;
},
removeItem: function() {
items.pop();
}
};
}]);