SORU
14 Mayıs 2013, Salı


Açısal: Uzanan denetleyicisi

Uzanan denetleyicileri için Açısal önerilen yolu nedir? Oldukça benzer üç denetleyicileri var. Bu üç uzanan bir kumanda var ve işlevlerini paylaşmak istiyorum.

CEVAP
29 EKİM 2013, Salı


Belki desanabir denetleyicisi uzatmak istemiyorum ama olası bir denetleyicisi uzatmak veya tek bir kumanda birden çok denetleyicileri kendisine dahil ederse.

module.controller('CtrlImplAdvanced', ['$scope', '$controller', function ($scope, $controller) {
    // Initialize the super class and extend it.
    angular.extend(this, $controller('CtrlImpl', {$scope: $scope}));
    … Additional extensions to create a mixin.
}]);

Ana denetleyicisi oluşturduğunuzda mantığı da yürütülecek olan dairedir. Bakın $denetleyicisi() ama $scope değeri çıkarılmalı. hakkında daha fazla bilgi için için Diğer tüm değerler normal olarak enjekte edilecektir.

@mwarrenendişenizi otomatik sihirli Açısal tarafından bağımlılık enjeksiyon halledilir. Tüm ihtiyacınız enjekte edilmesidir $istenirse diğer enjekte edilen değerleri geçersiz kılar, ancak kapsam. Aşağıdaki örnek alalım:

(function(angular) {

	var module = angular.module('stackoverflow.example',[]);

	module.controller('simpleController', function($scope, $document) {
		this.getOrigin = function() {
			return $document[0].location.origin;
		};
	});

	module.controller('complexController', function($scope, $controller) {
		angular.extend(this, $controller('simpleController', {$scope: $scope}));
	});

})(angular);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular.js"></script>

<div ng-app="stackoverflow.example">
    <div ng-controller="complexController as C">
        <span><b>Origin from Controller:</b> {{C.getOrigin()}}</span>
    </div>
</div>

Belgeye geçmedi 'yarattığı zaman' '' $belge bizim için enjekte edilir. complexController simpleController rağmen $

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011