我的网址如下:
http://www.something.com/project/edit/
的 987654321
使用AngularJS解析URL的 987654321 部分的最佳方法是什么? Angular中是否有任何辅助函数? (我宁愿不使用jQuery)
如果我理解正确,除非您在URL中使用#或启用HTML5模式,否则AngularJS中的路由功能将无法工作。
我们需要在首次加载页面时解析此URL。
答案 0 :(得分:10)
我会根据标题回答这个问题,因为我在这里寻找解析网址的方法。这是我在一个提琴页面上找到的answer。
var parser = document.createElement('a');
parser.href = "http://www.example.com";
//At this point it's parsed and all the info is on the parser object
console.log(parser.protocol);
console.log(parser.hash);
console.log(parser.hostname);
console.log(parser.port);
console.log(parser.pathname);
console.log(parser.search);
[更新]
我刚注意到有一个URL类。
var parsedURL = new URL('http://www.example.com');
console.log(parsedURL.hash);
console.log(parsedURL.protocol);
console.log(parsedURL.host);
//etc
答案 1 :(得分:4)
您可以使用$location
service's $location#path()
功能:
# given: url = http://www.something.com/project/edit/987654321
$location.path().split('/').pop();
然而,听起来你有路由问题。查看Angular Tutorial on Routing,其中显示了如何在$routeProvider
配置中正确使用app.js
路由。从教程:
phonecatApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/phones/:phoneId', {
templateUrl: 'partials/phone-detail.html',
controller: 'PhoneDetailCtrl'
})
.otherwise( ...) //omitting remainder of cut/paste
因此,您的app.js
会有如下路线定义:
ender2050App.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/project/edit/:id', {
templateUrl: 'partials/editor.html',
controller: 'EditorCtrl'
})
您的控制器文件(即controllers.js)将EditorCtrl
注入$routeParams
服务以访问id
变量。
如果您需要更自定义的解析选项,请查看$parse
service。
答案 2 :(得分:2)
问题和答案都不尊重标题。我在这里试图搜索如何解析角度中的任何网址。这个问题是关于解析请求的网址。如果我想解析http://www.google.com
??
编辑。