如何在angularjs

时间:2016-11-02 09:22:41

标签: javascript angularjs

当我从angular1.stml中的page1.html导航到page2.html然后返回到page1.html我的页面模型数据已经消失时,我有一个问题,我怎么能保留它,请帮助我解决这个问题。< / p>

我看过一些类似的问题,但无法理解如何使用服务在AngularJS中完成此任务。

4 个答案:

答案 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);
});