angular 通过服务获取和设置属性
angular get and set atributes via service
我找不到解决这个问题的方法,基本上每次我登录时,我想存储我从服务中的节点端点获得的用户,然后在我的主控制器中我应该得到用户名,但从未发生过,不知道为什么
代码如下:
app.controller('MainCtrl', function ($scope, $state,$location,$http,user) {
$scope.user = {
nome: user.getProperty()
};
$scope.showRegister = function () {
$state.go('register');
}
$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(data.nome);
$state.go('home');
})
.error(function (statusText) {
console.log("failed");
});
}
});
用户服务
app.service('user', function () {
var property = {};
return {
getProperty: function () {
return property.nome;
},
setProperty: function (value) {
property.nome = value;
}
};
});
您的主要问题是 MainCtrl
。在 MainCtrl
的初始执行中,您的服务中没有设置任何值,因此它变为空白。 MainCtrl
在服务中设置值之前执行。
$scope.user = {
nome: user.getProperty()
};
此代码应在服务中设置值后执行,但它在控制器初始化时执行。
您可以从下面的 fiddle 中获取参考。
http://jsfiddle.net/ADukg/9799/
您可以通过将此代码添加到您的 MainCtrl 来观察您的服务的变化:
$scope.$watch(function () { return user.getProperty();}, updateProp, true);
function updateProp(newValue, oldValue) {
$scope.user = {
nome: newValue
};
}
updateProp 在每次 user.getProperty() 的值改变时执行。
我找不到解决这个问题的方法,基本上每次我登录时,我想存储我从服务中的节点端点获得的用户,然后在我的主控制器中我应该得到用户名,但从未发生过,不知道为什么
代码如下:
app.controller('MainCtrl', function ($scope, $state,$location,$http,user) {
$scope.user = {
nome: user.getProperty()
};
$scope.showRegister = function () {
$state.go('register');
}
$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(data.nome);
$state.go('home');
})
.error(function (statusText) {
console.log("failed");
});
}
});
用户服务
app.service('user', function () {
var property = {};
return {
getProperty: function () {
return property.nome;
},
setProperty: function (value) {
property.nome = value;
}
};
});
您的主要问题是 MainCtrl
。在 MainCtrl
的初始执行中,您的服务中没有设置任何值,因此它变为空白。 MainCtrl
在服务中设置值之前执行。
$scope.user = {
nome: user.getProperty()
};
此代码应在服务中设置值后执行,但它在控制器初始化时执行。
您可以从下面的 fiddle 中获取参考。
http://jsfiddle.net/ADukg/9799/
您可以通过将此代码添加到您的 MainCtrl 来观察您的服务的变化:
$scope.$watch(function () { return user.getProperty();}, updateProp, true);
function updateProp(newValue, oldValue) {
$scope.user = {
nome: newValue
};
}
updateProp 在每次 user.getProperty() 的值改变时执行。