gpt4 book ai didi

javascript - 从 javascript 触发 AngularJS 路由

转载 作者:行者123 更新时间:2023-11-29 10:36:02 26 4
gpt4 key购买 nike

我正在尝试编写一个包含身份验证的简单应用。

var chatApp = angular.module('chat-app', ['ngRoute']);

chatApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/chat', {
templateUrl : 'static/html/partial/chat.html',
controller: 'chatCtrl'
});
}
]);

window.onload = function() {
checkAuth();
};

function checkAuth() {
var userId = localStorage.getItem('chat-id');
var userProfile = localStorage.getItem('chat-profile');

if(!userId) {
// Show login dialog and handle authentication
// This is done for me by an external service (auth0)
userId, userProfile = authenticate(); // Abstracting away for simplicity
localStorage.setItem('chat-id', userId);
localStorage.setItem('chat-profile', JSON.stringify(userProfile));
}
else {
userProfile = JSON.parse(userProfile);
}
angular.element($('html')).scope().nickname = userProfile.nickname;
// Now redirect to /chat
window.location.href = '#/chat';
}

当我运行上面的代码时,我可以看到身份验证正确进行并执行 window.location.href = '#/chat';。但是,这不会触发 Angular 的路由规则,因此不会加载我定义的模板。

我想一旦我掌握了 Angular $location 对象,我就可以设置 URL 并希望 Angular 完成剩下的工作。从纯 JavaScript 触发 Angular 路由的正确方法是什么?

最佳答案

var e = document.getElementById('chat-app');
var $injector = angular.element(e).injector();

var $location = $injector.get('$location');
$location.path("/chat");

信用@joakimbl angularjs redirect from outside angular

关于javascript - 从 javascript 触发 AngularJS 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36199553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com