【发布时间】:2015-04-21 08:21:13
【问题描述】:
我遇到了这个问题,我无法弄清楚发生了什么: 我正在使用 Angular 和它的路由机制。
所以我有一个网址:
<a href="#/videos/detail/{{video.Id}}" onclick="location.reload();">
<div class="card-image">
<img ng-src="{{video.ThumbnailUrl?video.ThumbnailUrl:'img/images.png'}}" src="" />
</div>
</a>
如您所见,onclick="location.reload(); 适用于 Chrome 和 IE9。但在 FF 上,它正在执行以下操作:
- 点击链接
- 网址已更新
- location.reload() 被调用,页面正在刷新
- url和角度视图,返回点击链接的页面
- 按下“F5”时,实际页面和网址正在加载
我也尝试过location.reload(true);,因为如果路由被缓存了,但没有运气。
如果您想知道为什么刷新和位置: 我需要刷新页面以重新加载插件(由于其中存在错误),这是我能想到的第一个方法。
编辑: 最终通过结合 Angular 和一些 Jquery 来完成;
所以最终的 html 看起来像这样;
<a href="#" class="prevent" ng-click="redirectwithreload('# />videos/detail/'+video.Id)" >
<div class="card-image">
<img ng-src="{{video.ThumbnailUrl?video.ThumbnailUrl:'img/images.png'}}" src="" />
</div>
</a>
指令看起来像这样
.directive('videoCard', function () {
return {
restrict: 'E',
templateUrl: 'partials/directives/video-card.html',
controller: function ($scope, $element, $location) {
$scope.redirectWithReload = function (url) {
var toUrl = location.href.split('#')[0] + url;
location.replace(toUrl);
}
},
compile: function () {
return {
post: function () {
$('a.prevent').click(function (e) {
e.preventDefault();
});
}
}
}
};
})
prevent 类只是为了让我的 Jquery 防止默认
并进行了一次 ng-click,因为如果我需要向 url 添加更多变量,现在很容易做到:)
感谢大家的帮助!特别是:@mplungjan
【问题讨论】:
-
它应该做什么? # 是一个锚。页面上的脚本应该对此做出反应。我看不到 location.reload 的用途。尝试删除它
-
@mplungjan:重定向然后刷新
-
请阅读我修改后的评论
-
这是一个 XY 问题。解决您需要重新加载插件的原因。
-
@mplungjan 我已经花了 2 周的时间来尝试修复插件,在此之上还有 1 个月的时间来解决我为什么需要该插件的问题。所以这已经是一个修复一个修复的修复:p
标签: javascript jquery angularjs