Angular direktifleri konusunda oldukça yeniyim ve bunu istediğimi yapmak için çok fazla sorun yaşıyorum. İşte ne var temelleri var:AngularJs yönergesi: şablon içinde üst kapsamdan çağrı yöntemi
Denetleyici:
controller('profileCtrl', function($scope) {
$scope.editing = {
'section1': false,
'section2': false
}
$scope.updateProfile = function() {};
$scope.cancelProfile = function() {};
});
Yönergesi:
directive('editButton', function() {
return {
restrict: 'E',
templateUrl: 'editbutton.tpl.html',
scope: {
editModel: '=ngEdit'
}
};
});
Şablon (editbutton.tpl.html):
<button
ng-show="!editModel"
ng-click="editModel=true"></button>
<button
ng-show="editModel"
ng-click="updateProfile(); editModel=false"></button>
<button
ng-show="editModel"
ng-click="cancelProfile(); editModel=false"></button>
HTML:
<edit-button ng-edit="editing.section1"></edit-button>
Açık değilse, <edit-button>
etiketinin, her biri kapsam özelliği ng-edit
'a iletilen üç farklı düğmeyle içerilmesini istiyorum. Tıklandığında, bu özelliği değiştirmeli ve uygun kapsam yöntemini çağırmalıdırlar.
Şimdi olduğu gibi, düğmelerin doğru tıklatılması $scope.editing
değerini değiştirir, ancak updateProfile
ve cancelProfile
yöntemleri işe yaramıyor. Yönergelerin doğru bir şekilde nasıl kullanılacağına dair temel bir yol olabilir, ancak yapmaya çalıştığım şeyi gerçekleştirmeme yardımcı olması için çevrimiçi bir örnek bulmakta zorlanıyorum. Herhangi bir yardım takdir edilecektir.
Harika, teşekkürler. İlk örneğinizi kullanmaya eğilimliyim, çünkü iki yöntem her zaman direktiflerde aynı olacak ve yabancı html'yi azaltacaktır. İkinci yolun "daha iyi yol" olduğunu söyleyen nedir? –
@futurityverb, İkinci yöntem daha geneldir. Yönergenin bir örneğini biraz farklı davranışlarla istiyorsanız, çağrılması gereken farklı bir yöntemden geçebilirsiniz. Ayrıca, yönergelerinizi diğer yönergelere yerleştirmeye başlarsanız, '$ parent' artık denetleyici kapsamına değil, diğer aracılara da başvurabilir. – Jerrad
Beni doğru yöne itti, ama ikinci örneğinizi kullanarak yöntemlere argümanları aktarmak istersem ne olur? –