2016-10-04 12 views
0

$ scope.watchを使用して、あるコントローラから別のコントローラに1つのデータを渡して渡します。これは正常に動作しますが、これを別のhtmlファイルで行うと、データは最初のクリックでは転送されません。ブラウザがリフレッシュされるためです。しかし、クロムで戻る矢印をクリックして値を設定してクリックすると、2番目のページで値を取得できます。どのように私はこれを解決することができます。解決策を教えてください。

var data = { 
    Quantity: '' 
}; 
return { 
    getQuantity: function() { 
     return data.Quantity; 
    }, 
    setQuantity: function(quantity) { 
     data.Quantity = quantity; 
    } 
}; 
.controller('DetailsCtrl', function($scope, $http, Data) { 
    $scope.quantity = ''; 
    $scope.$watch('quantity', function(newValue50, oldValue50) { 
     if (newValue50 !== oldValue50) 
      Data.setQuantity(newValue50); 
    }); 
}) 

.controller('FifthCtrl', function($scope, $http, Data) { 
    $scope.$watch(function() { 
     return Data.getQuantity(); 
    }, function(newValue50, oldValue50) { 
     if (newValue50 !== oldValue50) 
      $scope.quantity = newValue50; 
    }); 

}) 

答えて

0

ブラウザで異なるセッションの間の値を格納したい場合は、local storageに数量値を追加することができます。ここで

がangularjsサービス/工場出荷時の例です

app.factory('Data', function() { 

    var data = { 
     Quantity: '' 
    }; 

    return { 
     getQuantity: function() { 

      if (localStorage.getItem("data") === null) { 
       data.Quantity = 0; 
      } else { 
       var jsonData = localStorage.getItem('data'); 
       data.Quantity = JSON.parse(jsonData); 
      } 

      return data.Quantity; 
     }, 
     setQuantity: function (quantity) { 
      data.Quantity = quantity; 
      localStorage.setItem("data", JSON.stringify(data)); 
     } 
    }; 
}); 

注1:あなたはストレージに値を格納しますが、私はあるとして、それは放置するとあなたが実際にこの場合のオブジェクトのデータを "必要はありません。 。

注2:localStorageはオブジェクトなどの複合型を格納することはできません。格納する前に文字列を作成する必要があります。つまり、JSON.stringify()が使用される理由です。

+0

ありがとうございます。 – user3751835

関連する問題