我在我的Angular应用中使用$routeProvider
进行路由。对于2条路线,我使用相同的HTML模板和相同的控制器。
when('/products, {
templateUrl: 'views/products.html',
controller: 'ProductListCtrl'
}).
when('/myProducts', {
templateUrl: 'views/products.html',
controller: 'ProductListCtrl'
}).
我想要显示的数据只有差异。即for path products
我想要myserver:8080/products
的AJAX请求和路径myProducts
我要将数据从AJAX请求加载到myserver:8080/products/my
。
目前,我正在使用$location
服务来区分当前页面(products
或myProducts
)并加载适当的数据。
有更优雅的方式吗?例如,使用resolve
的{{1}}方法?
答案 0 :(得分:2)
在今天的场景中重用控制器名称的最佳方法是使用$ routeparams的解析。
您可以修改以下代码
when('/products, {
templateUrl: 'views/products.html',
controller: 'ProductListCtrl',
resolve: {
product: function($http) {
return $http.get('/products')
},
needToShowFilter:function($q){
var showfilter = $q.defer();
showfilter.resolve(false);
return showfilter.promise
}
}
}).
when('/myProducts', {
templateUrl: 'views/products.html',
controller: 'ProductListCtrl',
resolve: {
product: function($http) {
return $http.get('/products/my')
},
needToShowFilter:function($q){
var showfilter = $q.defer();
showfilter.resolve(true);
return showfilter.promise
}
}
}).
然后在您的控制器中,您可以将产品注入控制器代码。
答案 1 :(得分:0)
尝试在控制器中添加$ route,并记录
$route.current
看看你的内心,我认为这是获取信息的方式