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

  • Air_Fooj

    Air_Fooj

    24 NİSAN 2009
  • BigBoyTV

    BigBoyTV

    25 EYLÜL 2013
  • Brandon McCrary

    Brandon McCr

    15 Ocak 2012