我使用$ location在AngularJS网址上遇到了多个问题。基本网址为:http://localhost:3000/
。
当我点击<a>
标记将页面的索引移动到id:<a href="#home">Home</a>
时。
网址变为:http://localhost:3000/home
,页面偏移量不会更改。我必须再次点击以获取http://localhost:3000/home#home
以便偏移更改。
因为我正在使用$routeProvider
配置(请参阅下面的“应用程序配置”),我在index.html中使用ng-view
(首页加载):
<body ng-app="app">
<div ng-view class="{{class}}"></div>
</body>
这里的问题是我无法更改ng-view
内容。第一个视图views/home.html
已正确加载。在home.html页面上,我有:<a href="/register">Registration</a>
。
我的基本网址仍然相同,当我第一次点击此链接时,网址变为:http://localhost:3000/register
。哪个看起来正确!但观点并没有改变。我的页面上仍然有views/home.html
。
如果我输入类似.otherwise()
的网址,则应用程序配置的http://localhost:3000/toto
规则不会重定向,它会在页面上写Cannot GET /toto
。
angular.module("app", ["ngRoute", "ui.bootstrap"])
.config(["$locationProvider", "$routeProvider", function($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when("/", {
templateUrl: "views/home.html",
controller: "HomeCtrl"
})
.when("/:id", {
templateUrl: "views/home.html",
controller: "HomeCtrl"
})
.when("/register", {
templateUrl: "views/register.html",
controller: "RegisterCtrl"
})
.otherwise({
redirectTo: "views/error.html"
});
}]);
这是多个问题,我一次写下这些问题,因为它们可能是相关的。但是这个功能我真的遇到了很多麻烦。我想知道我是否应该使用ngInclude而不是ngView。
任何人都能解释我所有这些错误的行为以及我做错了吗?
还有使用ngView的最佳做法吗?或者在特定的背景下?