我正在尝试实现一个登录功能,它将有效用户重定向到一个个性化的HTML视图,用他们的名字欢迎他们。
我的第一个视图是登录视图。当用户单击标记为"Log In“的按钮时,ng-click应该调用控制器的$scope.login,它应该验证用户,设置$scope.needsLoggingIn变量,然后重定向到第二个视图(显示$scope.needsLoggingIn值的欢迎页面)。
我的问题是,当我试图在$scope.login函数中设置$scope.needsLoggingIn变量时,第二个视图(它使用相同的角度控制器和模块)没有显示它。只有当我在控制器中,在作用域函数之外硬编码值时,它才会显示$scope.needsLoggingIn:
$scope.needsLoggingIn = "Betty";这是我的控制器中的$scope.login函数,它尝试在中设置$scope.needsLogging,在第一个视图中被接受,但在第二个视图中不被接受:
$scope.login = function (username, password) {
$http({
method: 'GET',
url: ('/login/' + username + '/' + password)
}).then(function successCallback(response) {
if (JSON.stringify(response.data) === '[]')
{
$scope.needsPasswordMessage = true;
if ($scope.needsPasswordMessage)
$scope.needsPasswordMessage = false;
console.log("No match");
} else {
$scope.needsLoggingIn = username;
$scope.issuccessMessage = true;
if ($scope.isfailureMessage)
$scope.isfailureMessage = false;
$window.location.href = '../indextest.html';
return response;
}
}, function errorCallback(response) {
});
};谁有什么建议,我可以让我的$scope.needsLoggingIn识别两个超文本标记语言的视图,而不是硬编码到控制器中?我真的希望我的$scope.login函数能够设置变量值,并让使用这个特定控制器的所有视图都能识别它。
发布于 2017-08-04 23:55:01
您希望跨不同视图和控制器实例活动的数据应该通过服务进行处理。
基本上,您将创建一个类似以下内容的服务:
function userService($http) {
let service = {}
service.needsLoggingIn = ""
service.login = login
return service
function login() {
return $http.... (your login code)
}
}然后将服务注入到您的控件中,适当地设置属性,因为服务是单例的,所以这些属性值将在您注入服务的任何地方都可用。
https://stackoverflow.com/questions/45509683
复制相似问题