如何在AngularJS 1.x中保留控制器的状态?

时间:2016-08-05 07:52:58

标签: javascript angularjs angularjs-scope angular-routing angular-services

我有一个包含多个图片的图库。

单击图像时,会转到单个视图。

点击back按钮后,它会进入图库,但用户体验不佳 - 所有图片都会重新加载!

观察加载转到Chrome Dev Tools并启用Network Throttling enter image description here

(占位符图片不是最佳示例,因为它们几乎瞬间加载)

我知道为了保留控制器的状态,我可以使用服务,而这正是我正在做的事情:http://jsbin.com/doneqoruta/edit?html,output

    app.service("files", function() {
      return [
        "350x150",
        "450x150",
        "550x150",
        "650x150",
        "750x150",
        "850x150",
        "350x150",
        "450x150",
        "550x150",
        "650x150",
        "750x150",
        "850x150",
      ];
    })

    app.controller("ListCtrl", function($scope, files) {
      console.log("LIST CTRL");
      $scope.files = files;
    });

相关问题:Maintain model of scope when changing between views in AngularJS

files放入$rootScope对我有用,正如此答案所示:https://stackoverflow.com/a/12961220/775359来自Mark Rajcok

  

$ rootScope是一个很大的全局变量,适用于一次性事物或小型应用程序。

使用$rootScope的非闪烁版本:

    app.controller("ListCtrl", function($rootScope, files) {
      console.log("LIST CTRL");
      if (!$rootScope.files) {
        $rootScope.files = files;
      }
    });

是否有更好,更有棱角的方式?

在Ionic中有$ionicView.enter并且通过提出这个问题,我希望通过知识扩展。

更新

来自localhost的{p> 5秒视频:https://youtu.be/HU94T6RtEf8

enter image description here

(点击返回时我宁愿顺利过渡,我认为$rootScope可能就是这样)

0 个答案:

没有答案