SORU
17 EKİM 2012, ÇARŞAMBA


AngularJS görünümler arasında değişen kapsam modeli korumak

AngularJS öğreniyorum. /View1 My1Ctrl ve /view2 her görünüm, basit ama farklı kendi formu vardır sekmeleri kullanarak gezilebilecek olan My2Ctrl kullanma var. Nasıl değerleri view1 şeklinde girilen bir kullanıcı daha sonra view1 çıktığında sıfırlanır değil emin olun view1 döner ki? Ne demek istediğimi, nasıl view1 ikinci ziyaret bıraktığım gibi modelin aynı hal alabilir.

CEVAP
15 Mayıs 2013, ÇARŞAMBA


Biraz zaman, bunu yapmanın en iyi yolu nedir çalışmak aldım. Ben de kullanıcı sayfanın sol ve profesyonel kayıt Sihirbazı basıldıktan sonra devlet, tutun ve sadece rootscope içine tüm verileri koymak istedim

Sonuçta her denetleyici için bir servis var. denetleyici, eğer sıkıntı varsa bakım dont işlevleri ve değişkenleri var.

Denetleyicisi için hizmet bağımlılık enjeksiyon yoluyla enjekte edilir. Hizmetleri tekiz gibi, kendi veri kontrol verileri gibi yok edilir.

Hizmet, bir model var. bu model SADECE bir veri var, hiçbir işlevleri. bu şekilde ileri geri devam json dönüştürülmüş olabilir. Html5 localstorage öyle devam ederdim.

son olarak window.onbeforeunload $rootScope.$broadcast('saveState'); izin verirdim tüm hizmetleri kendi durumunu kaydetmek ve 6* *bunları biliyor durumuna geri yüklemek için izin gerektiğini biliyor. ( kullanıcı sayfası ve pres sayfasında sırasıyla geri dönmek için Geri düğmesini bıraktığında için kullanılır)

örnek servisi aradıuserServicebenim userController için

app.factory('userService', ['$rootScope', function ($rootScope) {

    var service = {

        model: {
            name: '',
            email: ''
        },

        SaveState: function () {
            sessionStorage.userService = angular.toJson(service.model);
        },

        RestoreState: function () {
            service.model = angular.fromJson(sessionStorage.userService);
        }
    }

    $rootScope.$on("savestate", service.SaveState);
    $rootScope.$on("restorestate", service.RestoreState);

    return service;
}]);

userController örnek

function userCtrl($scope, userService) {
    $scope.user = userService;
}

görünüm sonra bu gibi bağlayıcı kullanır

<h1>{{user.model.name}}</h1>

ve çalışma içinde uygulama modül, saveState ve restoreState yayın idare ettim işlevi

$rootScope.$on("$routeChangeStart", function (event, next, current) {
    if (sessionStorage.restorestate == "true") {
        $rootScope.$broadcast('restorestate'); //let everything know we need to restore state
        sessionStorage.restorestate = false;
    }
});

//let everthing know that we need to save state now.
window.onbeforeunload = function (event) {
    $rootScope.$broadcast('savestate');
};

dediğim gibi bu noktaya gelmek biraz zaman aldı. Çok temiz bir yoldur, ama şüpheli bir şey yapmak için o mühendislik açısal olarak geliştirirken çok yaygın bir sorundur adil bir bit vardır.

Denetleyicileri arasında devlet tutmak, kullanıcı bırakır ve sayfayı geri döndüğünde de dahil olmak üzere işlemek için daha kolay, ama temiz yol görmek isterdim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HowcastTechGadgets

    HowcastTechG

    22 EYLÜL 2010
  • IGN

    IGN

    19 EYLÜL 2006
  • LiquidMusick

    LiquidMusick

    23 Aralık 2010