SORU
28 Mart 2013, PERŞEMBE


Nasıl angularjs bir yönerge bir kumanda gerektirecek

Herkes başka bir angularJS yönergesinde bir Direktif bir denetleyici eklemek için nasıl söyler. örneğin aşağıdaki kodu var

var app = angular.module('shop', []).
config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/', {
        templateUrl: '/js/partials/home.html'
    })
        .when('/products', {
        controller: 'ProductsController',
        templateUrl: '/js/partials/products.html'
    })
        .when('/products/:productId', {
        controller: 'ProductController',
        templateUrl: '/js/partials/product.html'
    });
}]);

app.directive('mainCtrl', function () {
    return {
        controller: function ($scope) {}
    };
});

app.directive('addProduct', function () {
    return {
        restrict: 'C',
        require: '^mainCtrl',
        link: function (scope, lElement, attrs, mainCtrl) {
            //console.log(cartController);
        }
    };
});

Tüm hesap tarafından addProduct yönergesi denetleyicisi erişmek mümkün olmam gerekirdi ama değilim. Bunu yapmanın daha iyi bir yolu var mı?

CEVAP
28 Mart 2013, PERŞEMBE


Şansım yaver gitti ve bu soruya bir yorum bu cevap, ama bütünlüğü uğruna tam bir cevap gönderiyorum. ve bu soru işareti"". Cevap verdim


Bir denetleyici paylaşarak neyi elde etmek istediğini; ya da aynı kumanda paylaşabilirsiniz farklı örnekleri olsa da (), ya da aynı denetleyicisi örneği paylaşabilirsiniz bağlıdır.

Bir Denetleyici paylaşımı

İki satır, şu şekilde: iki direktifler için aynı yöntemi geçirerek aynı kumandayı kullanın

app.controller( 'MyCtrl', function ( $scope ) {
  // do stuff...
});

app.directive( 'directiveOne', function () {
  return {
    controller: 'MyCtrl'
  };
});

app.directive( 'directiveTwo', function () {
  return {
    controller: 'MyCtrl'
  };
});

Her Direktif denetleyicisi kendi kopyasını alacak, ama bu size istediğiniz gibi birçok bileşenleri arasında mantık paylaşmanızı sağlar.

Bir Denetleyici gerektirir

Aynı şey paylaşmak istiyorumörnekbir denetleyici, require kullanın.

require başka bir Yönetmeliğin varlığı sağlar ve daha sonra bağlantı fonksiyonu parametre olarak kendi denetleyicisi içerir. Eğer bir öğe üzerinde iki direktifler, Direktifgerektirirdiğer Direktif ve kazanç kontrol yöntemleri için erişim varlığı. Bu ortak kullanım örneği ngModel gerektirir.

Şapka ilavesi ile ^require,, Diğer Direktif bulmak için geçerli öğenin yanı sıra, Direktif yukarıdaki öğeleri kontrol eder. Bu "alt-bileşenleri" büyük etkisi kumandası ile ana bileşen ile iletişim kurabilirsiniz. karmaşık bileşenleri nerede oluşturmanızı sağlar Örnekler her bölmede genel sekmeler geçiş işlemek için iletişim kurabilirsiniz; akordeon zamanda bir dizi açık ortada sadece bir tane temin edebileceği sekmeleri; vb.

Ne olursa olsun, bu iş için iki direktifleri birlikte kullanmak zorunda. require bileşenler arasında iletişim kurmanın bir yoludur.

Kılavuzu kontrol edin daha fazla bilgi için direktifleri Sayfa: http://docs.angularjs.org/guide/directive

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AFISHAL

    AFISHAL

    7 Mart 2009
  • TechRax

    TechRax

    21 EYLÜL 2009
  • WHZGUD2

    WHZGUD2

    21 EYLÜL 2011