在我的应用程序中,每当我点击通过$ routeprovider加载不同部分的链接时,页面会定期刷新。然后,除了刷新之外,它还会将我带回默认的部分(即,我必须再次点击链接才能到达我想去的地方)。我根本没有使用任何刷新页面的方法;为什么会发生这种情况?
另外,有趣的是,当我点击任何非$ routeprovider链接时,这不会发生。以下是我的routeProvider:
.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.
when('/', {
templateUrl: "index.html"
}).
when('/profile/:id', {
templateUrl: "profile.html",
controller: 'UsersController as profiledUser'
}).
when('/gift/:id', {
templateUrl: "gift.html",
controller: 'GiftsController as profiledGift'
}).
when('/users-form', {
templateUrl: "users-form.html",
controller: 'UsersController as newUser'
}).
when('/login-form', {
templateUrl: "login-form.html",
controller: 'UsersController as loginUser'
}).
when('/gifts-form', {
templateUrl: "gift-form.html",
controller: 'GiftsController as newGift'
}).
when('/about', {
templateUrl: "about.html"
}).
otherwise({
redirectTo: '/'
});
以下是其中一个链接的示例,该链接在Chrome的开发工具中进行检查时链接到当前登录用户的个人资料:
<a href="#profile/5" data-ng-click="template=1" style="color: white;">Profile</a>
以下是代码中的相同链接,它是导航栏的一部分:
<li><a href="#profile/{{id}}" data-ng-click="template=1" style="color: white;">Profile</a></li>
重申一下,点击任何上述链接偶尔会重定向到.otherwise并刷新页面。我无法可靠地重现这种行为,因为它似乎是随机发生的;奇怪的是,即使我从配置中删除了.otherwise路线,也会发生这种情况。
答案 0 :(得分:0)
看起来您点击<a>
标签时一次尝试做两件事,但只发生了1件事:
template=1
即使发生template=1
,一旦切换到UsersController,您将无法再访问此设置。
尝试这样的事情:
<a href="#/profile/{{id}}/{{template}}">Profile</a>
加
.when('/profile/:id/:template', {
controller: 'UsersController as profiledUser',
templateUrl: 'profile.html'
})
或者,使用$ rootScope或template=1
的其他全局上下文,因此只要您依赖注入它,它就始终可用于任何控制器+视图。