25 EYLÜL 2012, Salı
Hizmet değişkenleri izlemek için Nasıl?AngularJS :
Bir hizmet var, dediler
factory('aService', ['$rootScope', '$resource', function ($rootScope, $resource) {
var service = {
foo: []
};
return service;
}]);
Ve foo
HTML içerisinde işlenen bir listesini kontrol etmek için kullanmak istiyorum:
<div ng-controller="FooCtrl">
<div ng-repeat="item in foo">{{ item }}</div>
</div>
aService.foo
güncelleme algılamak için denetleyicisi için denetleyici aService $scope
ben eklemek nerede birlikte bu desen Arnavut kaldırımlı sonra $scope.$watch()
kullanın:
function FooCtrl($scope, aService) {
$scope.aService = aService;
$scope.foo = aService.foo;
$scope.$watch('aService.foo', function (newVal, oldVal, scope) {
if(newVal) {
scope.foo = newVal;
}
});
}
Bu uzun elli hissediyor ve hizmetin değişkenleri kullanan her denetleyicisi tekrar edip durdum. Daha iyi bir şekilde paylaşılan değişkenleri izlemek gerçekleştirmek için var mı?
CEVAP
9 Temmuz 2013, Salı
Her zaman $watch
zulüm ve yükünü önlemek istiyorsanız iyi eski gözlemci desen kullanabilirsiniz.
Servis:
factory('aService', function() {
var observerCallbacks = [];
//register an observer
this.registerObserverCallback = function(callback){
observerCallbacks.push(callback);
};
//call this when you know 'foo' has been changed
var notifyObservers = function(){
angular.forEach(observerCallbacks, function(callback){
callback();
});
};
//example of when you may want to notify observers
this.foo = someNgResource.query().$then(function(){
notifyObservers();
});
});
Kumanda:
function FooCtrl($scope, aService){
var updateFoo = function(){
$scope.foo = aService.foo;
};
aService.registerObserverCallback(updateFoo);
//service now in control of updating foo
};
Bunu Paylaş:
Nasıl AngularJS, rota değişikliği için...
Nasıl önbellek için bir http angularjs...
Nasıl C kaynak dosyaları arasında pay ...
Nasıl bir hizmet Android üzerinde çalı...
Nasıl Android global değişkenleri bild...