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
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.
Nasıl bir denetleyici işlevi görünümle...
Angularjs korumak Satır sonları...
Nasıl denetleyicileri arasında değişke...
Ne fark (varsa) Html arasında.Kısmi(gö...
Nasıl kendi kapsamı ile özel bir yöner...