2017-05-15 2 views
0

Ich arbeite an einer Anwendung, die von Vorlage A zu Vorlage B zurück zu Vorlage A geht. Auf Vorlage A der Benutzer auf eine Schaltfläche klicken, um zu Vorlage B zu gelangen Benutzer fügt einen Betrag hinzu und trifft dann auf Senden. Das Programm kehrt dann zu Vorlage A zurück und zeigt an, was in Vorlage B eingegeben wurde, aber die übergebene Nummer wird im Bereich nicht aktualisiert und erscheint als Null. Aus irgendeinem Grund wird der Bereich aktualisiert, wenn ich die Anwendung von Vorlage B zu Vorlage A starte.

ich eine Fabrik bin mit

.factory('myService', function(){ 
    var budget = { 
    limit: null 
    }; 
    function set(data){ 
    budget.limit = data; 
    } 
    function get(){ 
    return budget.limit; 
    } 
    return{ 
    set: set, 
    get: get, 
    print: console.log(budget.limit) 
    } 
}) 

Hier ist mein Code für Template A BudgetCalc

genannt
<ion-view view-title="BudgetCalc"> 
    <ion-content class="padding"> 
    <a href="#/tab/dash/addBudget"><button>Start Budgeting</button></a> 
    <h2>Your Limit is {{limit}}</h2> 
    </ion-content> 
</ion-view> 

Und Vorlage B genannt addBuget

<ion-view view-title="Add a Budget"> 
    <ion-content> 
     <label class="item item-input"> 
      <span class="input-label">Set Spending Limit</span> 
      <input type="number"ng-model="limit"> 
     </label> 
     <button ui-sref="tab.budget" ng-click="setLimit(limit)">Submit</button> 
     <br><h2>Your Limit is: {{limit}}</h2> 
    </ion-content> 
</ion-view> 

Hier ist meine Controller sind für die zwei Vorlagen

mit localstorage

.controller('SetLimitCtrl', function($scope, $localstorage){ 
    $scope.setLimit = function(limit){ 
    if (limit != null) { 
     $localstorage.set("limit",limit); 
     console.log($localstorage.get("limit")); 
    } 
    } 
}) 

.controller('BudgetCtrl', function($scope, $localstorage) { 
    $scope.limit = $localstorage.get("limit"); 
    console.log("This is your limit " + $scope.limit); 
    //// Dont forgot to clear limit when you complete the further process 
}) 

Fabrik Localsoarage

.controller('BudgetCtrl', function($scope, myService) { 
    $scope.limit = myService.get(); 
    console.log("This is your limit " + $scope.limit); 
}) 

.controller('SetLimitCtrl', function($scope, myService){ 
    $scope.setLimit = function(limit){ 
    if (limit != null) { 
     myService.set(limit); 
     console.log(myService.print); 
    } 
    } 
}) 
+0

Jedes Mal, wenn Sie zurück gehen A zu betrachten, ist die console.log in BudgetCtrl läuft? – yBrodsky

+0

Nein, es läuft nur das erste Mal. Beim Zurückgehen wird es nicht erneut angezeigt. –

+0

Wenn Sie zurück zur Ansicht A navigieren, fügen Sie die Option zum erneuten Laden hinzu. $ state.go ('viewA'), {}, {reload: true}) – yBrodsky

Antwort

0

Sie können Daten zwischen den Controllern teilen:

.factory('$localstorage', ['$window', function ($window) { 
       return { 
        set: function (key, value) { 
         $window.localStorage[key] = value; 
        }, 
        get: function (key, defaultValue) { 
         return $window.localStorage[key] || defaultValue; 
        }, 
        setObject: function (key, value) { 
         $window.localStorage[key] = JSON.stringify(value); 
        }, 
        getObject: function (key, nulled) { 
         nulled = '[]'; 
         try { 
          return JSON.parse($window.localStorage[key] || '[]'); 
         } catch (e) { 
         } 
        }, 
        delete: function (key) { 
         $window.localStorage.removeItem(key); 
        }, 
       }; 
      }]) 
Verwandte Themen