SORU
24 Kasım 2013, Pazar


Açısal JS denetleyicileri arasında geçen veriler?

Ürünlerim gösteren basit bir kumanda var

App.controller('ProductCtrl',function($scope,$productFactory){
     $productFactory.get().success(function(data){
           $scope.products = data;
     });
});

Benim görüşüme göre bir liste bu ürünleri gösteren biriyim

<ul>
    <li ng-repeat="product as products">
        {{product.name}}
    </li>
</ul

Yapmaya çalıştığım şey, birisi bu ürün, eklendiği Ürün Adı, başka bir görünüm arabası var adı üzerine tıklayın.

 <ul class="cart">
      <li>
          //click one added here
      </li>
      <li>
          //click two added here
      </li>
 </ul>

Benim şüphesiz işte bu yüzden, nasıl ikinci ilk denetleyicisi bu tıklanan ürün veriyor? araba kumanda da olması gerektiğini düşündüm.

Tıklatın olay yönergesini kullanarak idare ettim. Hizmet işlevleri üzerinde ulaşmak için kullanıyor olmam gerektiğini hissediyorum nasıl, anlayamadım da? sepeti sayıda önceden tanımlanmış olacak çünkü ürünleri 5/10 bağlı olabileceğini ekledi. Bu genel tutmak istiyorum.

Güncelleme:

Hizmet yayın için yarattım ve ikinci kontrolör olarak alıyorum. Şimdi sorgu nasıl dom güncellerim? Listemi ürün bırakmak için yana güzel kodlanmış.

CEVAP
24 Kasım 2013, Pazar


Bu açıklama, bir servis kullanıyor olabilir gibi görünüyor. http://egghead.io/lessons/angularjs-sharing-data-between-controllers AngularJS Service Passing Data Between Controllers bazı örnekler görmek için kontrol edin.

Ürün servisi olarak tanımlayabilirsiniz

app.service('productService', function() {
  var productList = [];

  var addProduct = function(newObj) {
      productList.push(newObj);
  };

  var getProducts = function(){
      return productList;
  };

  return {
    addProduct: addProduct,
    getProducts: getProducts
  };

});

Bağımlılık her iki denetleyicileri içine enjekte hizmeti.

Senin ProductController, dizisi, seçili nesne ekleyen bir eylem tanımlayın:

app.controller('ProductController', function($scope, productService) {
    $scope.callToAddToProductList = function(currObj){
        productService.addProduct(currObj);
    };
});

Senin CartController, hizmetinden ürünler:

app.controller('CartController', function($scope, productService) {
    $scope.products = productService.getProducts();
});

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caramella Girls

    Caramella Gi

    19 Mayıs 2008
  • Kindness

    Kindness

    23 Ocak 2006
  • taliajoy18

    taliajoy18

    12 Temmuz 2011