我是一个有角度的新手,我基本上试图通过角度服务来设置和获取用户数据。我做的第一件事是当我登录时连接到我的节点路由并返回数据,如果用户将正确的数据放入登录。使用该数据,我想设置属性并将所有对象传递给服务。这在我的loginController中,每个页面都通过一个名为mainCTRL的全局控制器来控制。当我到达那里时,我会观察是否在服务中设置了用户属性。如果是,我接受它,如果没有,则没有用户登录。
这是代码:
app.controller('MainCtrl', function ($scope, $state,$location,$http,user) {
$scope.user.nome = "";
$scope.showRegister = function () {
$state.go('register');
}
if(angular.equals(user.getProperty(), {})){
$scope.user.nome = "";
}
else {
var userProfile = user.getProperty();
console.log(userProfile);
$scope.user.nome = userProfile.nome;
}
console.log(user.getProperty());
$scope.user = user.getProperty();
$scope.showLogin = function () {
$state.go('login');
}
});
app.controller('loginController', function ($scope, $http, $state,user) {
$scope.login = function () {
var data = {};
data.password = $scope.loja.password;
data.email = $scope.loja.email;
$http.post('http://localhost:8080/login/',data)
.success(function (data) {
console.log(data);
//user.setProperty(JSON.parse(data));
$state.go('home');
})
.error(function (statusText) {
console.log("failed");
});
}
});
我已成功登录控制台日志。它会向我返回一个对象,我想将该对象传递给服务,并在角度视图中检索我想要的属性。问题是我每次都会收到此错误:
angular.js:9509 TypeError: Cannot set property 'nome' of undefined
at new <anonymous> (controller.js:60)
at invoke (angular.js:3762)
at Object.instantiate (angular.js:3773)
at angular.js:6884
at angular.js:6270
at forEach (angular.js:329)
at nodeLinkFn (angular.js:6257)
at compositeLinkFn (angular.js:5722)
at compositeLinkFn (angular.js:5725)
at compositeLinkFn (angular.js:5725)
答案 0 :(得分:0)
目前,您正在尝试设置nome
对象的属性user
。您应首先初始化user
对象,然后再设置它的nome
属性。
$scope.user = {}; //add this at first line
//OR
//$scope.user = {
// nome: ""
//};