angualrjs的不同控制器里的数据共享和交互

来源:互联网 发布:淘宝买的固话办信用卡 编辑:程序博客网 时间:2024/05/17 03:39
第一、创建一个factory来储存和调取你的数据(你可以单独创建一个js文件,按照语义命名如:dataService.js。然后在你的主页面引入这个JS文件)
1
2
<!---->
<script src="dataService.js"></script>

创建一个factory命名为:dataService.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'use strict';
angular.module('myApp')
.factory('datadService',['$window',function($window) {
     return{        
            //
            set :function(key,value){
              $window.localStorage[key]=value;
            },        
            //
            get:function(key,defaultValue){
              return  $window.localStorage[key] || defaultValue;
            },       
            //JSON
            setObject:function(key,value){
              $window.localStorage[key]=JSON.stringify(value);
            },        
            //
            getObject: function (key) {
              return JSON.parse($window.localStorage[key] || '{}');
            }
          }
}]);


第二、将你创建的这个方法模块【datadService】注入到你要控制器中如下的控制器为【productCtrl】,下面我们创建一个set.js文件,里面代码如下:
1
2
<!---->
<script src="set.js"></script>

内部代码为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'use strict';
angular.module('myApp').controller(
        'productCtrl',
        [ '$scope','datadService',
                function($scope, datadService) {
                    $scope.appiAppType = 1;
                    //$scope.appiAppType$http.post$http.get
                    //
                    //$http.post('访URL',).success(function(data){
                    // $scope.appiAppType = data;
                    //});
                    datadService.setObject("lodinData", $scope.appiAppType);// datadServicelodinDataKEYdatadService便lodinData
                } ]);


第三、关于存储好的数据如何在不同的控制其中获取到,下面我们创建一个get.js,里面代码如下:
1
2
<!---->
<script src="get.js"></script>

内部代码为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'use strict';
//datadService
//lodinDatagetObject('key')
//datadService.getObject('lodinData');datadServicegetObjectlodinData
angular.module('myApp').controller(
        'completeCtrl',
        [ '$scope', 'datadService',
                function($scope, datadService) {
                    //datadService.getObject('lodinData');$scope.LoginList
                    $scope.LoginList = datadService.getObject('lodinData');
                    //$scope.LoginList  
                    alert(JSON.stringify($scope.LoginList))
                } ]);







1、定义服务

 //=========本地存储数据服务============    app.factory('locals', ['$window', function ($window) {        return {        //存储单个属性            set: function (key, value) {                $window.localStorage[key] = value;            },        //读取单个属性            get: function (key, defaultValue) {                return $window.localStorage[key] || defaultValue;            },        //存储对象,以JSON格式存储            setObject: function (key, value) {                $window.localStorage[key] = JSON.stringify(value);//将对象以字符串保存            },        //读取对象            getObject: function (key) {                return JSON.parse($window.localStorage[key] || '{}');//获取字符串并解析成对象            }        }    }]);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2、controller中调用: 
先注入服务,再set get

   app.controller('supplyAddCtrl', function ($scope, $http, $location, locals, $timeout, $compile) {   //存     locals.set("firstpos", firstpos);//字符串     locals.setObject("secondpos", secondpos);//对象   //取    locals.get("firstpos");    locals.getObject("secondpos");   }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

参考:

angularjs 本地数据存储LocalStorage

关于AngularJs 数据本地存储的实现(每一个独立的JS文件或者不同的控制器如何实现数据的共享与交互)









原创粉丝点击