我有一个简单的Web应用程序,它只是一个带有格式化JSON数据的表。单击列时,可以按升序过滤该列。
我希望像这样的行为将网址更改为:
www.website.com/column/asc,
您可以通过这种方式发送链接,当您访问该链接时,该列会按升序自动排序。我一直试图找到一种方法来做到这一点,而我最接近的是ui.router。
但是,我需要更改一个控制器范围变量,这是app.config无法做到的,我错过了什么?有没有更好的方法来完成我需要的东西?
app.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
var keys = Object.keys(data[0]);
$urlRouterProvider.otherwise('/');
for (var i = 0; i < keys.length; i++) {
$stateProvider.state(keys[i],{
url:'/'+keys[i],
controller: function($scope){
$scope.search = {keys[i]:ascending};
}
})
}
}]);
不幸的是,从这里开始,我不知道应该在哪里继续。大多数文档都使用模板页面,我只想更改控制器变量。有什么建议吗?
答案 0 :(得分:1)
您应该考虑使用UI路由器定义URL参数,然后将$ stateParams服务注入控制器,以便您可以从URL中读取参数。
首先定义你的状态:
$stateProvider.state('search',{
url: '/search/:searchParam',
controller: function($scope, $stateParams) {
$scope.search = $stateParams.searchParam;
}
});
请注意,我已稍微更改了网址格式。该网址带有唯一字符串(&#39;搜索&#39;),然后是变量参数&#39;:searchParam&#39;。
另外,我们只定义了一个名为&#39; search&#39;的状态,而不是每个参数一个状态。
所以使用以上网址:&#39; / search / asc&#39;将路由到搜索&#39;州,$stateParams.searchParam
将评估为&#39; asc&#39;。
答案 1 :(得分:0)