AngularJS'de özel bir yönerge yazdım. Ve $ transclude isSlotFilled yöntemini kullanmalıyım. Yönergenin yönergesi:
define(['../directives-module'], function (directivesModule, $scope, $transclude) {
directivesModule.directive('news', function() {
return {
restrict: 'E',
replace: true,
transclude: {
'heading': 'heading',
'content': '?content'
},
scope: {
'cmsContent': '@'
},
templateUrl: 'directives/news.html',
link: function(scope, element, attrs, ctrl, transclude){
console.log($transclude.isSlotFilled(content));
},
};
});
});
Yöntemin çalışıp çalışmadığını kontrol etmek için bir konsol.log() çıkışı çıkarmaya çalıştım. console.log() Yukarıdaki söyleyerek çalışmaz:
TypeError: Cannot read property 'isSlotFilled' of undefined
Aslında direktifin HTML dosyası üzerinde bu yöntemi kullanmak zorunda. Dosya news.html içerir: içerik yuvası dolu değilse
Eğer ng sınıf gördüğünüz gibi<div class="row">
<div class="largeText shadow1" ng-transclude="heading"></div>
<div class="mediumText shadow2" ng-transclude="content"
ng-class="{'hide' : $transclude.isSlotFilled(content)}">
</div>
</div>
, bu div gizler. Ancak burada ng-class içindeki koşul her zaman yanlıştır. Eminim, $ transclude enjekte ederek bir şey eksik. Bu yöntemi news.html'den düzgün bir şekilde kullanmak için ne yapmalıyım?
Kullandığınız açısal sürüm hangisi? –
@VishalRajole 1.5.0 Olduğunda –
Yönlendirmeye $ transclude enjekte etmiyorsunuz, her neyse. Bir modül mü? Hizmet? Bu konuda hiçbir şey söylenmiyor. – estus