您好我正在开发我的第一个Angularjs应用程序。我想在Angularjs应用程序中保存数据供以后使用(之前我在jquery中使用过localstorage)。 例如,我将进行ajax调用,我将得到一些数据,让我们在下面举例说明,
$http.post('http://192.168.0.213:1234/api/VerifyUser', $stateParams.pageList).then(function (response) {
alert(response.data);
另一个例子,在成功登录后,我会得到一些ID作为响应,我想在整个应用程序中保留这些数据。我可以在所有后续的ajax调用中使用此ID。 我会得到一些响应数据,我也想在其他控制器中使用这些数据。有什么方法可以做到这一点吗?任何帮助,将不胜感激。谢谢。
答案 0 :(得分:1)
可以使用以下选项实现控制器之间的数据共享:
然后,您可以跨控制器注入服务,并在需要时使用数据。
app.service('myService', function($http) {
this.getJSON = function() {
$http.post('http://192.168.0.213:1234/api/VerifyUser', $stateParams.pageList).then(function(response) {
return response.data;
});
};
});
在控制器中:
app.controller('myController', function($scope, myService) {
myService.getJSON().then(function(data) {
$scope.myData = data;
console.log(data);
});
});
答案 1 :(得分:1)
您可以将它存储在工厂中,如下所示
Ajax通话后
$http.post('http://192.168.0.213:1234/api/VerifyUser', $stateParams.pageList).then(function (response) {
alert(response.data)
SomeFactory.setData(response.data);
};
<强> SomeFactory 强>
(function () {
'use strict';
angular
.module('app.myApp')
.factory('SomeFactory', SomeFactory);
SomeFactory.$inject = [];
function SomeFactory() {
var someData;
var factory = {
setData: setData,
getData: getData
};
function setData(data) {
someData = data;
}
function getData() {
return someData;
}
return factory;
}
})();
在您的控制器中
将您的工厂注入您的控制器,然后获取数据
(function () {
'use strict';
angular
.module('app.login')
.controller('LoginController', LoginController);
LoginController.$inject = ['SomeFactory'];
function LoginController(SomeFactory) {
var vm = this;
vm.someVariable = SomeFactory.getData();
console.log(vm.someVariable); // logs your data
}
})();
答案 2 :(得分:0)
使用Service存储数据,稍后在另一个控制器中获取数据。
当您注入服务时,它在每个控制器中都是相同的服务 - 因此您可以访问该服务中的属性和方法。
https://docs.angularjs.org/guide/services
示例:
.service('YourService', function(){
var YourService = {};
YourService.yourvar = '';
return YourService;
})
.controller('controller1', function($scope, YourService){
YourService.yourvar = 'blah';
})
.controller('controller2', function($scope, YourService){
$scope.currentYourVar = YourService.yourvar;
})