当我登陆特定页面(我的产品#show page,ex:/ products / 30)时,在我的Rails 4应用程序中点击页面上的任何链接,浏览器不会移动。但是,每次点击都会更改网址。
我调查了这个问题,似乎在我的AngularJS控制器中包含$location
提供程序导致了这个问题,即使浏览器控制台没有任何错误。
BTW,我只在我的应用程序上使用AngularJS 2页,所以我决定坚持使用Rails路由。
在application.html.erb
我<html ng-app="ilook">
在我的show.html.erb
我有这个:
<div ng-controller="ProductCtrl">
{{ product }} zzz <!-- this prints 1 zzz -->
</div>
在load-angular.js
包含的application.js
javascript文件中:
var app = angular.module('ilook', ["ngResource"]);
app.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(true);
}]);
在我的productscontroller.js
中,这有效:
app.controller('ProductCtrl', ['$scope', '$resource', 'SingleProduct', function($scope, $resource, SingleProduct) {
$scope.product = "1";
}]);
但包括$location
会导致我的产品#show上的链接停止工作:
app.controller('ProductCtrl', ['$scope', '$location', '$resource', 'SingleProduct', function($scope, $location, $resource, SingleProduct) {
$scope.product = "1";
}]);
我忘了包含模块吗?我需要$ location以便我可以使用路径/ products / 30以便我可以向我的Rails应用程序的API部分发出请求并获取给定ID的正确产品。使用$ routeParams似乎不起作用,因为我使用Rails路由而不是角度。任何帮助,将不胜感激。附:起初我认为这是一个Turbolinks问题,但即使在删除之后也没有任何改变。
== UPDATE ==
当我删除配置中的$locationProvider.html5Mode(true);
行时,链接再次起作用。但是,即使在$location.path()
,/products/30
也会返回一个空字符串。那我怎么抓住这条路呢?
答案 0 :(得分:1)
当使用$ location处理未使用ng-route的页面上的查询参数时,我遇到了几乎相同的情况。我最终使用了html5mode的以下定义,它似乎解决了我的问题,链接不再有效。
$locationProvider.html5Mode({
enabled: true,
requireBase: false,
rewriteLinks: false
});