Telefon ve Tabletlerde ekrana parmak ile dokunduğumuzda bunu yakalayıp işlem yapmamızı sağlayacak güzel bir eklenti tanıtacağım size. Ben bu eklentiyi kullanarak parmak ile kaydırarak açılıp kapanan bir yan menü örneği hazırladım videoda. Umarım işinize yarar, zira ben responsive dökümlerde bu eklentisi sıkça kullanıyorum.
Çok basit şekilde checkbox ve radio inputlarını özelleştirebilirsiniz. İlk olarak radio ve checkbox için html yapılarına göz atalım;
<label>
<input type="radio" name="cinsiyet" checked />
Kadın
</label>
<label>
<input type="radio" name="cinsiyet" />
Erkek
</label>
Bu radio inputu içindi. Gördüğünüz gibi label kullanıyoruz. Sebebi ise labele tıklandığında otomatik olarak radio butonunu kendisi seçeceği için jquery’de ekstra bir şey yapmamıza gerek kalmıyor. Aynı şekilde checkboxiçinse yapı şöyle;
<label>
<input type="checkbox" value="1" name="test" checked />
Kullanım Koşulları'nı okudum, kabul ediyorum.
</label>
Şimdi jquery kodlarımızda ilk olarak :radio ve :checkbox seçicilerini kullanarak bir döngüye sokacağız. Eğer checked olan inputlar var ise bunların kapsayıcı nesnesine yani labellere checked classı atayacağız.
$(':radio, :checkbox').each(function(){
$(this).after('');
if ( $(this).is(':checked') ){
$(this).parent().addClass('checked');
}
});
Evet şimdi label’e tıklandığında radio ise farklı checkbox ise farklı işlemler yapalım. Radio inputu ise, onun name’ini alıp diğer radioların labellerindeki classı kaldırıp tıklanana checked classı atayacağız. Eğer checkbox inputu ise, :checked ile seçili olup olmadığını anlayıp ona göre checked classını ekleyip kaldıracağız.
$('label').on('click', function(e){
// radio
if ( $(':radio', this).length ){
var name = $(':radio', this).attr('name');
$('input[name=' + name + ']').parent().removeClass('checked');
$(this).addClass('checked');
}
// checkbox
if ( $(':checkbox', this).length ){
if ( $(':checkbox', this).is(':checked') ){
$(this).addClass('checked');
} else {
$(this).removeClass('checked');
}
}
});
Artık geriye sadece css’den düzenleme yapmak kalıyor. Örneğin şöyle bir düzenleme yapabilirsiniz;
Biraz daha direktiflerden bahsetmek istiyorum.. ng-click, ng-model ve ng-repeat direktifleri ile devam edebiliriz yazımıza.
ng-click
ng-click direktifi elemana tıkladığımızda özel bir davranış belirlememizi sağlar. Örneğin elemana tıklanınca ne yapılması gerektiğini belirleyebiliriz. Ya da bir fonksiyon çalıştırabiliriz gibi..
Bu yazımda sizlere $http servisinin kullanımını göstermek istiyorum. AngularJS’de amaç JSON olarak datayı almak ve DOM’da neler olacağını belirlemektir.
Örneğin jQuery’de get metodu nasıldı önce kullanımını bir hatırlayalım;
AngularJS’de de mantık aynı sonuçta. Ancak bunu controllerımın içinde $scope gibi $http parametresini aldıktan sonra yapacağım. İlk olarak html yapımıza bir göz atalım;
Evet şimdi github adında modülümüzü oluşturalım. Sonra getUserInfoadında bir controller tanımlayıp $http servisi ile github’a bir get request yapalım. Gelen değeride user data modeline aktaralım.
Aslında böyle çok okunaklı değil. Örneğin hata aldığında 2. bir fonksiyonda bunu anlıyoruz ancak böyle iç içe yazmak sağlıklı olmuyor. Bunu daha okunaklı bir hale getirelim;
Şimdi ng-show ve ng-hide direktifleri ile html çıktımızı daha mantıklı hale getirelim. Yani error var ise hatayı gösterip kullanıcı bilgilerini gizleyelim, tam tersi ise kullanıcı bilgilerini gösterip hatayı gizleyelim.
AngularJS’de MVC yapısı olduğunu söyledim mi bilmiyorum. Bunu en temelden öğrenmek gerekirse size ilk olarak bir controller’ın nasıl oluşturulacağını göstermek istiyorum.
AngularJS Controller Yapısı
İlk olarak ng-app direktifini uyguluyorum.
<div ng-app>
kodlar..
</div>
Bir controllerı kullanmak için ng-controller direktifini kullanıyoruz.
Şimdi testController adında bir controller kullanacağımı söylüyorum. Ve mesaj değerini ekrana yazdırıyorum. Bu mesaj değerini controller içerisinde modelde tanımlayacağız. Hemen bir js dosyası oluşturup controllerı yazmaya başlayalım.
var testController = function($scope){
$scope.mesaj = "Merhaba AngularJS!";
};
Evet gördüğünüz gibi $scope adında bir parametre aldı fonksiyonumuz. $scope bizim modelimiz. Daha aldığı birçok parametre var, bunlar servis olarak adlandırılıyor. Ayrıntılı olarak şuradan bakabilirsiniz: https://docs.angularjs.org/api/ng/service
AngularJS öğrenirken bazı notlar alıyorum. Bunu bloğumda da zaman zaman paylaşacağım. İlk olarak EngılırCeyEs diye okunmasıyla başlayalım olaya ???? Ve devam edelim..
AngularJS’i kullanmak için 2 şey gerekli. 1) angular.js dosyasını sayfaya dahil etmek 2) HTML’de ng-app direktifini angular kullanacağımız alan için belirlemek – Bu arada ngAngular‘ın kısaltılmış halidir.
<script src="angular.js"></script>
<div ng-app>
bu alan Angular tarafından yorumlanmaktadır..
</div>
Artık div içerisine küçük bir angular kodu yazabilirim.
Bize çıktıda 5 * 10 = 50 sonucunu gösterecektir. {{ ve }} karakterleri AngularJS’e özeldir. Bu yüzden bunu görüyorsanız bilin ki orada bir Angular olayı mevcut.
Evet sizinle küçük bir başlangıç yaptık, tebrikler ????
Şimdi #up nesnesinin click eventını tıklamadan nasıl tetiklerim? Tabi ki trigger ile.. Yani;
$('#up').trigger('click');
dediğim zaman sanki #up nesnesine tıklanmış gibi yazdığım click eventım çalışacaktır. Bunu özellikle slider’da çok kullanıyorum ben, sizinde işinize yarayacağına eminim ????