当我从angular1.stml中的page1.html导航到page2.html然后返回到page1.html我的页面模型数据已经消失时,我有一个问题,我怎么能保留它,请帮助我解决这个问题。< / p>
我看过一些类似的问题,但无法理解如何使用服务在AngularJS中完成此任务。
答案 0 :(得分:2)
如果我理解正确,您希望在应用程序的两个不同视图中共享某个状态。有很多方法可以实现这一点,如上所述,您可以使用服务。
var app = angular.module('myApp', []);
app.service('myService', function(){
var data;
this.setData = function(d){
data = d;
}
this.getData = function(){
return data;
}
});
app.controller('myCtrl1', function($scope, myService){
$scope.data = myService.getData();
//do something
});
app.controller('myCtrl2', function($scope, myService){
$scope.data = myService.getData();
//do something
});
服务是单例,一次实例化然后以角度缓存,每当您需要特定数据时,您可以注入服务并调用所提供的方法。
答案 1 :(得分:0)
在代码中使用本地存储概念,它会将所有数据存储在浏览器中,当您浏览页面时,您可以从浏览器获取所有数据。检查下面的示例代码。
<html ng-app="app">
<head>
<script data-require="angular.js@1.1.5" data-semver="1.1.5" src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
<script src="https://rawgithub.com/gsklee/ngStorage/master/ngStorage.js"></script>
<script>
angular.module('app', [
'ngStorage'
]).
controller('Ctrl', function(
$scope,
$localStorage
){
$scope.$storage = $localStorage.$default({
x: 42
});
});
</script>
</head>
<body ng-controller="Ctrl">
<button ng-click="$storage.x = $storage.x + 1">{{$storage.x}}</button> + <button ng-click="$storage.y = $storage.y + 1">{{$storage.y}}</button> = {{$storage.x + $storage.y}}
</body>
</html>
答案 2 :(得分:0)
尝试在同一个应用中设置两个HTML,以便数据不会丢失。使用路由视图来显示HTML,
如果您将HTML从一个更改为另一个,肯定会发生数据丢失,角框架仅适用于单页应用....
答案 3 :(得分:0)
app.run(function($rootScope) {
$rootScope.name="something";
});
//Controller
app.controller('myController',function ($scope,$rootScope){
console.log("Name in scope ",$scope.name);
});