2016-04-07 7 views
-1

'daki denetleyicileri anlamıyorum Bu, sormama alışkın olduğum bir sorudur, ancak bunun neyle uğraştığımı anlamanın tek yolu olduğunu hissediyorum. Aşağıda gösterildiği gibi, app.controller() ve app.factory() olmak üzere iki işlev vardır, her ikisi de eşit görünse bile, fonksiyonun görevini yerine getirmediği halde, her ikisi de eşit görünüyor. plunker içinAngular JS

Bağlantı: click here

bu iki fonksiyon arasındaki fark nedir (İlgili dosya script.js olan), neden bunu ben bunlardan sadece bir tane var? Basit bir açıklama olması gerektiğini biliyorum. bir gerektiğinde

app.controller('MainCtrl', ['$scope', 'ItemsService', function ($scope, ItemsService) { 
    $scope.newItem = { PlateNumber: '', Description: '', Price: 0 }; 
    $scope.currentItem = null; 

    $scope.items = ItemsService.getItems(); 

    $scope.addItem = function() { 
     ItemsService.addItem(angular.copy($scope.newItem)); 
     $scope.newItem = { PlateNumber: '', Description: '', Price: 0 }; 
    }; 

    $scope.updateItem = function (id) { 
     ItemsService.updateItem(id); 
    }; 

    $scope.removeItem = function (id) { 
     ItemsService.removeItem(id); 
    }; 
}]); 

vs
app.factory('ItemsService', ['$firebase', 'FIREBASE_URI', function ($firebase, FIREBASE_URI) { 
    var ref = new Firebase(FIREBASE_URI); 
    var items = $firebase(ref); 

    var getItems = function() { 
     return items; 
    }; 

    var addItem = function (item) { 
     items.$add(item); 
    }; 

    var updateItem = function (id) { 
     items.$save(id); 
    }; 

    var removeItem = function (id) { 
     items.$remove(id); 
    }; 

    return { 
     getItems: getItems, 
     addItem: addItem, 
     updateItem: updateItem, 
     removeItem: removeItem 
    } 
}]); 
+0

değiller benzer görünüyor, sen açısal belgeler okuma denediniz? Bir denetleyiciniz olmalı, bir fabrikaya ihtiyacınız yok ... https://docs.angularjs.org/guide/providers daha fazla bağlantı: http://stackoverflow.com/questions/14324451/angular-service-vs- köşeli fabrika başka: http://jsfiddle.net/k3phygpz/ – JordanHendrix

+0

Hizmetler tekil, kontrolörler değildir. Bu bir başlangıç. – Rob

+0

En sevdiğiniz birini kullanın (bu durumda) – TGrif

cevap

1

Kontrolörler sadece (eğer ng-controller veya controllerAs kullanın), örneği. Yani, farklı bir rotaya veya sayfaya her geçişinizde, Angular bir denetleyiciyi (örneğin, sayfayı yenilediğinizde temizlenenle aynı olabilir) örneklendirir.

Köklü sağlayıcılar, bunların birkaç ana sayfası vardır. çeşitleri - Bunlardan biri olan fabrika, uygulamanın ömrü boyunca verileri saklamanın ve hatta farklı denetleyiciler arasında veri aktarmanın bir yoludur. Sorunuzun kapsamı daha fazladır: Sağlayıcı vs Denetleyici, Fabrika değil (tek tiptir) vs Denetleyici.

Yukarıdaki örnekte, ONE denetleyiciniz var, ne varsa çok var? Aynı kodu tekrar tekrar yazmadan veri veya yardımcı işlevlerini birçok denetleyiciye nasıl iletebilirsiniz? Biri Sağlayıcıları ile! Eğer kontrol etmek için

İşte bazı iyi bağlantılar vardır: İki iken

Angular Provider Docs

Blog post by Tyler McGinnis explaining the above further

JSFiddle with Example of a Factory vs a Service