以角度管理动态URL
Manage dynamic URLs in angular
我遇到了一个问题,几乎所有的URL部分都是可选的,但控制器是相同的。我有一个带有动态URL部分的URL,当用户选择一些过滤器参数时,它取决于过滤器URL更改,例如:/search
、/search/min-1000
、/search/max-10000
等。
而且我有与搜索几乎相同的详细URL,但有id
URL部分,例如:/search/{id}/min-1000
、/search/{id}/min-1000/max-10000
、/search/{manufacture-name}/{id}/min-1000/max-10000
等等
如何使用angular路由器或angular ui构建这样的动态URL?
以下是示例:http://plnkr.co/edit/70Ihz0nqRjiDOKoEJzRI
您必须在控制器中为该路由注册每个定义的路由的params。显然,$stateParams根据url参数创建了一个对象,并将其注入到路由中——如果您已经在该路由中注册了这些params的话。
然后,您可以为每个可能的构建构建一条路线,注册与该路线相关的所有参数:
/search/:id
/search/:id/:min
/搜索/:id/:min/:max
/搜索/:id/:min/:max/:类型
https://github.com/angular-ui/ui-router/wiki/URL-Routing#stateparams-服务
这里有一个例子,类似于你在egghead.io中尝试做的事情(我把它移到plnkr中,让它更容易修改:http://plnkr.co/edit/XhWRMipsfn37bEDwC1sT?p=preview
你的每条路线都需要看起来像这样:
.state('list.item', {
url: '/:item',
templateUrl: 'templates/list.item.html',
controller: function($scope, $stateParams) {
$scope.item = $stateParams.item;
}
})
他们在这里也有一段视频:https://egghead.io/lessons/angularjs-introduction-ui-router
我用可选参数完成了这项工作:
$stateProvider
.state('details', {
url: '/cars{make:(?:/[^/]+)?}{model:(?:/[^/]+)?}/{id:[0-9a-fA-F]{24}}{postcode:(?:/postcode''-''w+)?}{distance:(?:/''d+miles)?}{minprice:(?:/min''-''d+)?}{maxprice:(?:/max''-''d+)?}',
templateUrl: 'js/app/controllers/details/partials/index.html',
controller: 'DetailsCtrl'
})
.state('search', {
url: '/cars{postcode:(?:/postcode''-''w+)?}{distance:(?:/''d+miles)?}{minprice:(?:/min''-''d+)?}{maxprice:(?:/max''-''d+)?}',
templateUrl: 'js/app/controllers/search/partials/index.html',
controller: 'SearchCtrl'
})
.state('searchMake', {
url: '/cars{make:(?:/[^/]+)?}{postcode:(?:/postcode''-''w+)?}{distance:(?:/''d+miles)?}{minprice:(?:/min''-''d+)?}{maxprice:(?:/max''-''d+)?}',
templateUrl: 'js/app/controllers/search/partials/index.html',
controller: 'SearchCtrl'
})
.state('searchMakeModel', {
url: '/cars{make:(?:/[^/]+)?}{model:(?:/[^/]+)?}{postcode:(?:/postcode''-''w+)?}{distance:(?:/''d+miles)?}{minprice:(?:/min''-''d+)?}{maxprice:(?:/max''-''d+)?}',
templateUrl: 'js/app/controllers/search/partials/index.html',
controller: 'SearchCtrl'
});
- 以角度管理动态URL
- javascript在动态Url中匹配并添加字符串
- 在angular.js中定义动态URL的重定向
- 对使用 Ajax 捕获的动态 url 响应
- jQuery UI中的动态url,数据表
- 限制与AngularJS状态匹配的动态URL参数的最佳方式
- URL重写Node js-动态URL
- 如何构造用于骨干路由的动态url
- Facebook选项卡应用程序动态URL
- 使用ui路由器实现动态URL路由的最佳方式是什么
- 如何从json文件中的基本url生成动态url
- 如何从JSON文件中读取动态url
- 带有标签的动态url的社交共享
- 基于表单输入生成动态 URL
- 另一种在javascript中创建随机动态url的方法/阻止wpengine缓存
- 从用户输入到搜索的动态 URL
- SAPUI5 和 OData 服务的动态 URL
- 使用动态 URL 初始化时保存主干模型
- 动态 url 作为 css 和 D3JS 中伪元素的数据属性
- 使用Javascript/Jquery来删除动态URL