【问题标题】:How to use ngStorage in angularjs如何在 angularjs 中使用 ngStorage
【发布时间】:2016-01-07 06:29:00
【问题描述】:

访问https://github.com/gsklee/ngStorage

我的代码有 2 个部分,在 partial1 中我有 3 个输入框,输入的数据是“abc”、“pqr”、“xyz”,单击按钮时我想重定向到输入框所在的 partial2填充了在控制器“abcpqr”、“abxy”中计算的以下详细信息。

两个部分都使用 localStorage [ngStorage],并且在控制器中,这些值被计算并在单击按钮 [ng-click="functionName()"] 时被推送到 partial2。该函数具有执行计算的逻辑。如何做到这一点?

在我创建的应用程序中,我在两个部分中都有 20 多个这样的字段,所以我不想传递值,而是将它们存储在 localStorage 中并从那里访问。

【问题讨论】:

  • Usage 链接中的部分有答案。
  • @Arkantos 我不知道如何将 $scope.$storage = $localStorage 用于函数而不是 $default。
  • 我得到了我遇到的问题,我在哪里保存 $log.debug("launching and save the new value" + url); $timeout(function(){ var myWindow = $window.open("", "_self"); myWindow.document.write(response.data); });
  • 抱歉,我无法理解您的目标。有了这个,$scope.$storage = $localStorage,您将在当前范围内创建对 localStorage 的引用,并且可以直接通过缓存的引用完成任何更新。您面临的具体问题是什么?
  • 在 partial1 中输入的数据应在单击按钮时反映在 partial2 上。这没有发生。

标签: angularjs angular-local-storage ng-storage


【解决方案1】:

假设您尝试在 partial1 中捕获的所有字段都具有 ng-model 属性,如下所示。

部分 1

<input type='text' ng-model='pageData.field1' />
<input type='text' ng-model='pageData.field2' />
<input type='text' ng-model='pageData.field3' />

app.js

    var myApp = angular.module('app', ['ngStorage']);

    myApp.controller('Ctrl1', function($scope, $localStorage){

        $scope.pageData = {};

        $scope.handleClick = function(){
           $localStorage.prevPageData = $scope.pageData; 
        };

    });

    myApp.controller('Ctrl2', function($scope, $localStorage){

        $scope.pageData = $localStorage.prevPageData;

    });

部分 2

<p>{{pageData.field1}}</p> 
<p>{{pageData.field2}}</p> 
<p>{{pageData.field3}}</p> 

另一种方法:

但是,如果您只想将数据从 page1 中的一个控制器发送到 page2 中的另一个控制器,您也可以使用服务来实现。

myApp.service('dataService',function(){

   var cache;

   this.saveData = function(data){
      cache = data;
   };

   this.retrieveData = function(){
      return cache;
   };

});

在您的第一个控制器中注入此服务以保存页面数据,然后在您的第二个控制器中再次注入它以检索保存的页面数据。

myApp.controller('Ctrl1', function($scope, dataService){

   dataService.saveData($scope.pageData);

});

myApp.controller('Ctrl2', function($scope, dataService){

   $scope.pageData = dataService.retrieveData();

});

【讨论】:

  • 嗨,谢谢 :) 这绝对解决了我的问题。不得不在这里和他们的地方做一些改变,这很好。万分感谢。 :)
  • 我遇到了另一个错误。我有一个重置按钮,可以清除本地存储,但点击它后,我的完整代码停止工作。到处都显示为 {{$storage.pageA.XYZ}}。可能是什么问题? [所有其他角度代码在点击重置后立即停止工作代码。]
  • $storage.$reset() 要正常工作,您应该在控制器范围内将 $localStorage 引用为 $storage。那可用吗?您还看到开发工具 (F12) 控制台选项卡中的任何错误吗?
  • 我的 ng-model 是 $storage.pageA.X。如何解决这个问题?如何设置默认值、删除和做其他事情?请参阅github.com/gsklee/ngStorage。我试过了,对我没用。
  • 只能在控制器中使用 ngstorage 吗?如果我有一个服务模块来处理需要在本地存储的特定数据,我不认为使用控制器来处理所有这些都是明智的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 2015-08-27
  • 2016-09-17
  • 2023-03-23
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
相关资源
最近更新 更多