我想获得一些关于当前登录用户的信息,我已经将变量存储在CurrentUser
中,但当我试图从控制器访问它时,什么也不会出现
(function () {
'use strict';
angular
.module('thinkster.authentication.services')
.factory('Authentication', Authentication);
Authentication.$inject = ['$cookies', '$http'];
/**
* @namespace Authentication
* @returns {Factory}
*/
function Authentication($cookies, $http) {
/**
* @name Authentication
* @desc The Factory to be returned
*/
var Authentication = {
login: login,
register: register,
getAuthenticatedAccount: getAuthenticatedAccount,
isAuthenticated: isAuthenticated,
setAuthenticatedAccount: setAuthenticatedAccount,
unauthenticate: unauthenticate,
currentUser: ''
};
return Authentication;
////////////////////
/**
* @name register
* @desc Try to register a new user
* @param {string} username The username entered by the user
* @param {string} password The password entered by the user
* @param {string} email The email entered by the user
* @returns {Promise}
* @memberOf thinkster.authentication.services.Authentication
*/
function register(email, password, username) {
return $http.post('/api/v1/accounts/', {
username: username,
password: password,
email: email,
}).then(registerSuccessFn, registerErrorFn);
function registerSuccessFn(data ̶,̶ ̶s̶t̶a̶t̶u̶s̶,̶ ̶h̶e̶a̶d̶e̶r̶s̶,̶ ̶c̶o̶n̶f̶i̶g̶ ) {
Authentication.login(email, password)
};
function registerErrorFn(data ̶,̶ ̶s̶t̶a̶t̶u̶s̶,̶ ̶h̶e̶a̶d̶e̶r̶s̶,̶ ̶c̶o̶n̶f̶i̶g̶,) {
console.log(data)
}
}
function login(email, password){
return $http.post('/api/v1/auth/login/', {
email: email,
password: password
}).then(loginSuccessFn, loginErrorFn);
function loginSuccessFn(data ̶,̶ ̶s̶t̶a̶t̶u̶s̶,̶ ̶h̶e̶a̶d̶e̶r̶s̶,̶ ̶c̶o̶n̶f̶i̶g̶ ) {
Authentication.setAuthenticatedAccount(data.data);
// pass data through to dashboard controller
window.location = '/dashboard'
Authentication.currentUser += data.config.data.email
console.log(Authentication.currentUser)
}
function loginErrorFn(data, status, headers, config) {
console.error('Failed');
console.log(data)
}
}})();
(function() {
'use strict';
angular
.module('thinkster.authentication.controllers')
.controller('DashboardController', DashboardController);
DashboardController.inject = ['$location, $scope', 'Authentication'];
function DashboardController($location, $scope, Authentication){
var vm = this;
vm.user_info = user_info
//vm.user_info2 = user_info
function user_info() {
return Authentication.currentUser
}
}
})();
我试图更新loginsuccessfn()
中的CurrentUser
,它在服务中更新成功。我可以在控制台中看到这一点,但当我试图在控制器中引用它时就看不到了。提前致谢
首先,为什么要使用+=设置变量
(authentication.currentuser+=data.config.data.email
)
使用=设置当前用户
另外,为了可读性和一致性,我会使用camelCase来表示函数,使用under_score来表示对象字段
例
function userInfo() { // camelCase
return Authentication.currentUser;
}
var vm = this
vm.user_info = userInfo() // under_score object
我知道有很多关于传递参数的线程,但我仍然不明白。 我有阶段与类。在这个类中,我创建了例如变量。然后我单击此阶段上的按钮,它使用创建新阶段,我可以在其中修改此值。在中是值的setter和getter方法。在中,我可以从中获取值并对其进行编辑,但最后当我关闭第二阶段时,我尝试通过中的setter方法将此编辑后的值设置为新数字。然后我关闭它,然后像第一次一样再次打开它。但是我看不到新的编辑值,我再次看到
问题内容: 我通过这种方式将值传递给自定义过滤器: 我也想在其中注入几个范围变量,就像我在指令中可以做的那样。不必将这些var作为函数参数显式传递就可以做到这一点吗? 问题答案: 显然可以。 通常,您会将范围变量作为函数参数传递给过滤器: 但是,要传递当前范围,您必须传递: 并将引用当前范围: 简化: 警告: 请注意这一点,并仅使用范围读取过滤器中的值,否则您将很容易在$ digest循环中发现自
问题内容: 我正在使用socket.io在我的应用中启用聊天功能,并且正在使用一项服务来执行所有套接字操作。当出现消息时,我想从服务中触发控制器的功能以在UI中进行一些更改。所以我想知道如何从服务访问控制器的功能。样例代码: 这是服务的示例代码。 现在控制器的代码 问题答案: 您可以通过使用角度事件或来实现此目的。 在您的情况下会有所帮助,您需要广播事件,以便具有相同事件名称的所有子作用域都可以监
问题内容: 我有上面的控制器,它设置了一个我只能从内部访问值的控制器。 但我看到的地方,使用下面我将能够访问,但是当我在它不存在。 我无法弄清楚如何访问$ scope并使用变量更新它。 问题答案: 没有看到标记,我想MenuSideController的作用域是您选择的作用域的子作用域。 虽然可以像这样遍历树(假设我们想要的作用域是第一个孩子): 仅选择连接了特定控制器的元素会更简单。 假设您正在
问题内容: 我有一个ng- view以外的NavbarCtrl。我有一个与服务对话以使用户登录的登录控制器。用户登录后,我希望导航栏更新为用户的电子邮件地址。但是,对我而言,一旦用户登录,我似乎无法让Navbar范围更新加载到我的“ Auth”服务中的数据。 这是我的主要index.html: 而我的服务: 还有我的Login和Navbar控制器: 从我的研究中,我会认为$ scope.user
问题内容: 我想在Chrome的JavaScript控制台中访问我的变量。我怎么做? 我既看不到控制台中的模块名称也看不到它的变量。 问题答案: 在开发人员工具的HTML面板中选择一个元素,然后在控制台中输入以下元素: 在WebKit和Firefox中,是对elements选项卡中所选DOM节点的引用,因此通过执行此操作,可以在控制台中打印出所选DOM节点范围。 您还可以按元素ID定位作用域,如下
问题内容: 我正在尝试通过常规函数访问全局变量,这可能吗? 我已经使用$ rootScope设置了一些变量,并且我试图通过回调函数来访问它。从控制器调用此回调。我不想传递该回调。 有什么办法可以访问吗? 我愿意使用服务。 请提出建议。 谢谢 我试图按以下方式访问rootScope: 我的服务是: 它在updateStatus fn下显示isFBLoggedin为true,但未反映在视图上 我正在打
问题内容: 我已经阅读了几篇有关angularjs实体正确用法的文章:服务,工厂,控制器和指令。 我特别关心的是控制器和服务的比较。但是,没有一个帖子告诉我什么是控制器可以执行服务不能执行的操作,反之亦然。 可以列出它吗?或者仅仅是在angular的用法上规范? 问题答案: 控制器 通常用于绑定视图。控制器管理视图的生命周期,应将其视为视图控制器。将为视图的每个实例创建一个新的控制器,这意味着,如