2015-10-09 52 views
3

訪問https://github.com/gsklee/ngStorage如何在angularjs中使用ngStorage

我的代碼有2個partials,在partial1中我有3個輸入框,輸入的數據是'abc','pqr','xyz',點擊按鈕我想要重定向到partial2,其中輸入框在控制器'abcpqr','abxy'中計算出以下詳細信息。

這兩個partials使用localStorage [ngStorage]並在控制器中這些值得到計算,並通過點擊按鈕[ng-click =「functionName()」]被推到partial2。該功能具有執行計算的邏輯。這個怎麼做?

在我創建的應用程序中,我在這兩個partials中都有20多個這樣的字段,所以我不想傳遞值,而是讓它們存儲在localStorage中並從那裏訪問。

+0

[用法](https://github.com/gsklee/ngStorage#usage)部分從您的鏈接有答案。 – Arkantos

+0

@Arkantos我不想知道如何使用$ scope。$ storage = $ localStorage帶有一個函數而不是$ default。 –

+0

我得到我發出的問題我有,我在哪裏保持 $ log.debug(「啓動並保存新值」+ url); ()函數(){ var myWindow = $ window.open(「」,「_self」); myWindow.document.write(response.data); }); –

回答

12

假設您有ng-model屬性,您試圖在partial1中捕獲所有字段,如下所示。

偏-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> 

另一種方法:

但是,如果您只是想將數據從頁面1中的一個控制器發送到頁面2中的另一個控制器,那麼也可以使用服務來完成此操作。

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(); 

}); 
+0

嗨,謝謝:)這絕對解決了我的問題。必須在這裏和他們做出一些改變,而且很好。萬分感謝。 :) –

+0

我收到另一個錯誤。我有一個清除localStorage的重置按鈕,但點擊它後,我的完整代碼停止工作。它顯示爲{{$ storage.pageA.XYZ}}。有什麼可能是這個問題? [所有其他角碼停止工作後,點擊重置<按鈕ng-click =「$ storage。$ reset()」> Reset code。] –

+0

'$ storage。$ reset()'要正常工作,您應該在您的控制器範圍內引用$ localStorage作爲$ storage。這可用嗎?您是否也看到開發工具(F12)控制檯選項卡中的任何錯誤? – Arkantos

相關問題