2016-03-23 20 views
1

Verileri bir diziye saklıyorum ancak sayfayı yenilediğimde, veriler sayfamda kayboluyor.Verileri bir Diziye Kaydetme AngularJS'de vm'yi kullanma

Bu benim JS kodunuz: denetleyicisi yeni bir örneğini yenilemek her zaman oluşturulur

function VideoController() { 
    var vm = this; 

    vm.videos = []; 

    vm.addVideoUrl = function(text) { 
    vm.videos.push(angular.copy(text)); //HOW I AM TRYING TO SAVE DATA INTO MY ARRAY, VIDEOS 
} 

} 
+0

daha fazla bilgiye ihtiyacımız var. Ancak denetleyici görünümünüze eklenmiş gibi görünüyor -> sayfayı yenilediğinizde yükler ve vm.videos öğesini [] – niklas

cevap

3

. Bunun için dizinin boş olması için yeniden başlatıldı.

Verilerinizi saklamak ve almak için tarayıcının yerel deposunu kullanabilirsiniz.

0

Verileri geçici olarak kaydetmek için $cookies (https://docs.angularjs.org/api/ngCookies/service/$cookies) kullanabilirsiniz. Yerel depolama için tercih edilir çünkü varsayılan olarak bir bitiş süresi vardır.

+0

olarak ayarlar. Çerezlerin boyutunun sınırlı olduğunu unutmayın, orada çok fazla veri saklamamaya çalışın. Kullanıcı, tarayıcıda çerezleri devre dışı bırakabilir - sadece hatırlanması gereken bir şey. –

0

localstorage veya sessionstorage numaralarını kullanabilirsiniz, bkz. here.

I:

Aşağıdaki örnek durumda

angular.module('myApp', []) 
    .controller('myCtrl', ['$scope', function($scope) { 
    var saveVideosToStorage = function(){ 
     localStorage.setItem('videos', angular.toJson($scope.videos)); 
    } 

    var init = function() { 
     //load video array from localstorage/sessionStorage 
     var videos = angular.fromJson(localStorage.getItem('videos')); 
     if (!(videos instanceof Array)) { 
      //videos has been corrupted 
      $scope.videos = []; 
      saveVideosToStorage(); 
     } 

     $scope.videos = videos; 
    } 

    var addVideoUrl = function(text) { 
     $scope.videos.push(angular.copy(text)); //HOW I AM TRYING TO SAVE DATA INTO MY ARRAY, VIDEOS 
     saveVideosToStorage(); 
    } 

    $scope.addVideoUrl = addVideoUrl; 
    init(); 
    }]); 

ve burada

<div ng-repeat="video in videos track by $index">{{video}}</div> 
    <input ng-model="videoUrl" type="text"/> 
    <input type="button" ng-click="addVideoUrl(videoUrl);"> 

Ve plunker

NOT olduğu biçimlendirme için nasıl kullanılacağını gösterirkullanıldı var vm = this

yerinelocalStorage, sessionStorage ve çerezleri anlamak için kolay bir açıklama buldum here.

İlgili konular