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

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011
  • segtlim

    segtlim

    21 EKİM 2008