SORU
18 Aralık 2012, Salı


Açısal HTTP dönüştürmek.bir hizmet sağlar

HTTP.get* *10 services.js bir hizmet için benim işlevi bir Açısal dönüştürmek için çalışıyorum.

Tüm bulduğum örnekler hizmetini uygulamak için çakışan yolları ve isimlerini seçtikleri kafa karıştırıcı. Ayrıca, hizmetler için gerçek açısal belgelerine henüz bir farklı örnek daha sözdizimi kullanır. Bu süper basit olduğunu biliyorum, ama lütfen bana yardım et.

*, , *, *15controllers.js*14 12**ben.

app.js

angular.module('MyApp', []).
    config(['$routeProvider', function($routeProvider)
        {
            $routeProvider.
                when('/bookslist', {templateUrl: 'partials/bookslist.html', controller:             BooksListCtrl}).
                otherwise({redirectTo: '/bookslist'});
        }
    ]);

controllers.js

function BooksListCtrl($scope,$http) {
    $http.get('books.php?action=query').success(function(data) {
        $scope.books = data;
    });

    $scope.orderProp = 'author';
}

CEVAP
18 Aralık 2012, Salı


Modüller ve bağımlılık enjeksiyon düşünün.

Bu yüzden, hadi bu üç dosya var

<script src="controllers.js"></script>
<script src="services.js"></script>
<script src="app.js"></script>

Üç modül gerekir

1. Ana Uygulama Modülü

angular.module('MyApp', ['controllers', 'services'])
  .config(['$routeProvider', function($routeProvider){
    $routeProvider
      .when('/bookslist', {
        templateUrl: 'partials/bookslist.html', 
        controller:  "BooksListCtrl"
      })
      .otherwise({redirectTo: '/bookslist'});
  }]);

Diğer iki modülü ana modülü içine enjekte edilir, onların bileşenleri tüm uygulama için kullanılabilir dikkat edin.

2. Kontrolörler Modülü

Kumandanız genel bir işlevdir şu anda, denetleyicileri bir modüle eklemek isteyebilirsiniz

angular.module('controllers',[])
  .controller('BooksListCtrl', ['$scope', 'Books', function($scope, Books){
    Books.get(function(data){
      $scope.books = data;
    });

    $scope.orderProp = 'author';
  }]);

Books denetleyici işleve geçirilen ve enjekte edilen hizmetleri modülü tarafından kullanılabiliranauygulama modülü.

3. Hizmetleri Modülü

Burada Books servis tanımlayın.

angular.module('services', [])
  .factory('Books', ['$http', function($http){
    return{
      get: function(callback){
          $http.get('books.json').success(function(data) {
          // prepare data here
          callback(data);
        });
      }
    };
  }]);

Hizmetleri kayıt birden çok yolu vardır.

  • hizmet: yapıcı işlevi bir sınıf diyebiliriz) geçer ve sınıfının bir örneğini döndürür
  • sağlayıcı: bu yana en esnek ve yapılandırılabilir sana enjektör hizmeti başlatmasını çağrı işlevlerine erişim sağlar
  • fabrika: enjektör hizmeti. başlatmasını çağıran bir işlev geçirilir

factory kullanarak tercihim fonksiyonu ve sadece bir nesne döndürür. Yukarıdaki örnekte biz sadece geri bir başarı geçirilen get bir işlevi olan bir nesne döndürür. Bu bir hata işlevi de geçmek değiştirebilirsin.


EditBir yönerge bir hizmet ekleme nasıl yorum @yair talebine cevap burada.

4. Direktifleri Modülü

Ben her zamanki desen izleyin, js dosyası eklemek ilk

<script src="directives.js"></script>

Daha sonra yeni bir modül tanımla falan, bu durumda bir register yönergesi

angular.module('directives',[])
  .directive('dir', ['Books', function(Books){
    return{
      restrict: 'E',
      template: "dir directive, service: {{name}}",
      link:function(scope, element, attrs){
        scope.name = Books.name;
      }
    };
  }]);

Bu enjekteDirektifibu modülüana modülapp.js.

angular.module('MyApp', ['controllers', 'services', 'directives']) 

Farklı bir strateji takip ve içine bir modül enjekte etmek isteyebilirsinizdirektifleri modülü

Bu sözdizimi dikkat edinbağımlılık satır içi ek açıklamahemen hemen her şey için aynıdır. Direktif aynı Kitap hizmeti enjekte edilir.

Plunker Güncellendi: http://plnkr.co/edit/mveUM6YJNKIQTbIpJHco?p=preview

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kanaal van Dj0fifty

    Kanaal van D

    28 EKİM 2011
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011