2017-05-15 13 views
0

テンプレートAからテンプレートBに移動するアプリケーションで作業しています。テンプレートAでは、ユーザーがボタンをクリックしてテンプレートBに移動します。テンプレートBでは、金額にユーザーが追加された後、送信されます。プログラムはテンプレートAに戻り、テンプレートBに入力されたものを表示しますが、送信された番号はスコープ内で更新されず、nullとして表示されます。何らかの理由で、アプリケーションをテンプレートBからテンプレートAに起動すると、スコープが更新されます。ページ間を移動するとスコープが更新されない

私はテンプレートAのための私のコードはBudgetCalc

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

そして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> 

という名前のテンプレートBはのための私のコントローラであると呼ばれている。ここの工場

.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) 
    } 
}) 

を使用しています2つのテンプレート

.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

をあなたがAを見るために戻って行くたびに、実行中のBudgetCtrlではconsole.logのですか? – yBrodsky

+0

いいえ、初めて実行されます。戻ってくると再び表示されません。 –

+0

ビューに戻ってナビゲートするときに、リロードオプションを追加します。 – yBrodsky

答えて

0

あなたがの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 
}) 

工場Localsoarage使用してコントローラ間でデータを共有することができます:

.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); 
        }, 
       }; 
      }]) 
関連する問題