controller
Fonksiyon / nesne bir soyutlama model görünüşüdür-kontrolör (MVC) temsil eder. MVC hakkında yazacak yeni bir şey olmasa da, hala açısalın en önemli avantajı: endişeleri daha küçük parçalara ayırın. Ve bu tepki gerek eğer öyleyse, başka bir şey, bu kadar Model
gelen değişikliklere doğru kişi o işi yapmak için.View
Controller
link
İşlev hakkındaki hikaye farklıdır, MVC'den farklı bir perspektiften geliyor. Ve bir kez controller/model/view
(şablonun) sınırlarını aşmak istediğimizde gerçekten çok önemlidir .
İşleve geçirilen parametrelerle başlayalım link
:
function link(scope, element, attrs) {
- scope , bir Açısal kapsam nesnesidir.
- öğesi , bu yönergenin eşleştiği jqLite ile sarılmış öğedir.
- attrs , normalleştirilmiş öznitelik adlarına ve karşılık gelen değerlerine sahip bir nesnedir.
İçeriğe koymak için link
, tüm direktiflerin bu başlatma işlemi adımlarından geçtiğini belirtmeliyiz: Derleme , Bağlantı . An Özü Brad Green ve Shyam Seshadri kitap Eğik JS :
Derleme aşaması (bağlantı kız kardeşi, net bir resim elde etmek için burada bahsedelim):
Bu aşamada, Angular, şablondaki tüm kayıtlı yönergeleri tanımlamak için DOM'u yürür. Her yönerge için, daha sonra DOM'u yönerge kurallarına (şablon, değiştir, ekleme, vb.) Göre dönüştürür ve varsa derleme işlevini çağırır. Sonuç, derlenmiş bir şablon işlevidir,
Bağlantı aşaması :
Görünümü dinamik hale getirmek için Angular her yönerge için bir bağlantı işlevi çalıştırır. Bağlantı işlevleri genellikle DOM'da veya modelde dinleyiciler oluşturur. Bu dinleyiciler görünümü ve modeli her zaman senkronize tutar.
Nasıl kullanılacağıyla ilgili güzel bir örnek link
burada bulunabilir: Özel Yönergeler Oluşturma . Örneğe bakın: Sayfaya "tarih-saat" ekleyen DOM'yi İşleyen bir Yönerge Oluşturma her saniye yenilenir.
DOM ile gerçek manipülasyonu gösteren, yukarıdaki zengin kaynaktan sadece çok kısa bir snippet . $ Zaman aşımı hizmetine bağlı bir işlev vardır ve ayrıca bellek sızıntılarını önlemek için yıkıcı çağrısında temizlenir
.directive('myCurrentTime', function($timeout, dateFilter) {
function link(scope, element, attrs) {
...
// the not MVC job must be done
function updateTime() {
element.text(dateFilter(new Date(), format)); // here we are manipulating the DOM
}
function scheduleUpdate() {
// save the timeoutId for canceling
timeoutId = $timeout(function() {
updateTime(); // update DOM
scheduleUpdate(); // schedule the next update
}, 1000);
}
element.on('$destroy', function() {
$timeout.cancel(timeoutId);
});
...
$watch
,$digest
ve$apply
. "?