- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在将其他人制作的一个现有的小型 Angular JS 应用程序集成到一个不是使用 Angular 构建的现有网站中。
所有 Angular JS 应用程序文件都保存在一个完全独立的目录中,然后用户可以单击一个链接将它们带到该子目录的索引中。例如:
<a href="/path/to/angular-app/?returnUrl=/original/location">Login.</a>
正如您在上面看到的,我需要传递一个名为 returnUrl
的 URL 参数。然后我需要在 Angular JS 应用程序中获取这个值,使用:
$location.search()
然而,这实际上返回一个空对象。我认为这是因为 Angular JS 在 URL 参数 之后附加了 #!/login
,如下所示:
example.com/path/to/app?returnUrl=/original/location/#!/login
如果我在浏览器中修改 URL,将 returnUrl
参数移动到 URL 的末尾并刷新页面,它会起作用并且 $location.search()
返回 {returnUrl: "/original/location/"}
。但是,据我所知,我无法在我的网站上更改它,因为该参数是 Angular JS 应用程序链接的一部分,并且 #!/login
是随后自动添加的。
我是 AngularJS 新手,所以请尽可能清楚地解释:
#!/login
之前?$location.search()
返回任何内容?如果我将参数移动到生成的 URL 的末尾,它就会起作用。最佳答案
What is going on here? And why is the URL parameter before the #!/login?
您可以将#! 之前的查询字符串参数视为服务器端 参数,将#! 之后的查询字符串参数视为< em>客户端参数。这是完全有效的:
http://example.com?serverParam=client1#!angularRoute?angularParam=someValue
服务器端参数允许您配置如何从服务器提供页面,然后,在提供服务器页面并加载 Angular 应用程序后,使用客户端 提供特定 Angular 应用程序所期望的参数。
Why does this prevent $location.search() from returning anything? If I move the param to the end of the resulting URL, it works.
因为在您将值移到那里之前,没有为客户端参数指定任何内容。
What can I do to fix this?
<a href="example.com/path/to/app/#!/login?returnUrl=/original/location">Login.</a>
或复制参数,使其在服务器和客户端上都可用 <a href="example.com/path/to/app/?returnUrl=/original/location#!/login?returnUrl=/original/location">Login.</a>
$window
并从中获取服务器端值 $window.location.search
$location
并使用 $location.absUrl()
这是一个示例,说明如何从服务器端参数设置客户端参数:
var app = angular.module('YOURAPPNAME', []);
app.run(['$location', function($location) {
// I'm going to fake out the url so it runs in the SnippetEditor.
var url = "example.com/path/to/app?returnUrl=/original/location/#!/login"; //$location.absUrl();
var hashbangIdx = url.indexOf('#!');
var serverStr = hashbangIdx > -1 ? url.substring(0, hashbangIdx) : url;
var qIdx = serverStr.indexOf("?");
var p = qIdx > -1 ? serverStr.substring(qIdx).split(/[&||?]/) : [];
for (var i = 0; i < p.length; i += 1) {
if (p[i].indexOf('=') > -1) {
var param = p[i].split('=');
$location.search(param[0], param[1]);
}
}
}]);
app.controller('MainCtrl', ['$scope', '$location', function($scope, $location) {
$scope.params = $location.search();
}]);
<!DOCTYPE html>
<html ng-app="YOURAPPNAME">
<head>
<meta charset="utf-8" />
<title>AngularJS</title>
<script data-require="angular.js@1.5.x" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js" data-semver="1.5.11"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<h4>Parameters:</h4>
<p ng-repeat="(name, val) in params">
{{name}}: {{val}}
</p>
</body>
</html>
关于javascript - Angular JS : URL parameter appears before the `#!/` and doesn't appear in $location. 搜索(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44160530/
我的 CSS 中有以下代码: header input{ width:100%; height:50px; float:left; color:fff; background: rgba(255,25
我一直在尝试使用外观代理 API 将一些默认颜色应用于某些控件,但我遇到了问题。 当我使用诸如...之类的东西将色调颜色应用到 UISegmentedControl 时 UISegmentedCont
我正在将其他人制作的一个现有的小型 Angular JS 应用程序集成到一个不是使用 Angular 构建的现有网站中。 所有 Angular JS 应用程序文件都保存在一个完全独立的目录中,然后用户
我的应用程序在调用 $(document).ready 后向 DOM 添加一些元素。我正在使用 jQuery 1.9.0 以下示例有效。 $(document).on("click", "#box-d
我是 jquery 方面的大菜鸟,我需要弄清楚如何更改此代码: $('.social li').appear(); $(document.body).on('appear', '.social li'
这个问题在这里已经有了答案: Z-index with before pseudo-element (2 个答案) Is it possible to set the stacking order
尽管MSDN和 MDN声明 IE11 似乎根本不支持 webkit-appearance。尝试将 -webkit-appearance 设置为任何声称支持的值时(none、button、textfie
当我尝试克隆 git 用户 HOME 之外的远程 git 时出现错误。 Cloning into test... fatal: '/media/raid/repo/test.git' does not
谁能明白为什么这个 html 代码不起作用。 当图像变得可见时,它应该显示警报,当图像对用户不可见时,它应该再次显示警报。 它也不适用于本地库。
我正在尝试访问 super 英雄 api,但对于某些数据,它一直显示数据未定义。 var html = ""; $.each(data.results,function(i,results){ ht
我需要编写一个小的正则表达式匹配器,它将匹配任何出现的字符串形式 [a-zA-Z]+(_[a-zA-Z0-9]+)? 如果我使用上面的正则表达式,它会匹配所需的部分,但也会匹配到 4_abc 的 ab
在我的网站上,我有多个组件充当每个单独页面的模板,例如“主页”、“关于我”等……我的目标是在每个页面之间实现滑动过渡,我已经使用过渡标签以及添加的“出现”属性和一些 CSS 实现了这一点。我的问题是,
我正在尝试将两个微调器放入工具栏(我正在使用协调器布局) 代码如下
我想让导航栏在使用关闭按钮关闭时消失,或者在关闭屏幕时让导航栏隐藏。 代码如下: - (void)viewDidLoad { [self.navigationController setNav
这个问题不太可能帮助任何 future 的访客;它只与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the
感谢您阅读这个问题,我是 React 新手,我尝试做一个任务应用程序,所以我这样做。 App.js import React, { Component }from 'react' import Rea
我一直在尝试通过 jQuery 删除-webkit-appearance:none; 但没有任何效果。我尝试了以下方法: jQuery(document).ready(function(){ jQ
我为我的选择框设置了样式,它在 chrome 和 safari 上运行良好。 现在我的问题出在 FF 中,我仍然可以看到带有选择框的下拉箭头。 我试过引用this solutions和 this so
我刚刚自学 HTML 和 CSS,但遇到了我的第一个烦人的错误。 这是我的代码: http://pastebin.com/Rk6TjqKZ 到目前为止,这是我唯一的图像,它曾经出现过,但自从将一个类添
如果我能在任何地方找到这方面的任何信息,我就不会问这个问题。我检查了 w3schools、这个网站和谷歌。什么都没有。 那么,是否有一个 css -ms 等同于 -webkit-appearance?
我是一名优秀的程序员,十分优秀!