AngularJS : Ne '@' Yönerge kapsamında '=' arasındaki fark nedir
Konu AngularJS belgeleri dikkatle okuyun ve sonra bir yönerge ile oynuyordu fikrimi değiştirdim. İşte fiddle.
Ve burada bazı ilgili parçacıkları
html:
<pane bi-title="title" title="{{title}}">{{text}}</pane>
bölmesi Yönetmeliği:
scope: { biTitle: '=', title: '@', bar: '=' },
Anlamadığım birkaç şey vardır:
- neden kullanmak zorunda mıyım "{{title}}" ' @ ' ve "Başlık" ' = ' ile mi?
- ayrıca ebeveyn kapsamında doğrudan, bir öznitelik ile benim öğe dekorasyon olmadan erişebilir miyim?
- Belgelere diyor"Genellikle arzu üst kapsam için bir ifade ile izole kapsam ve veri geçmek"iki yönlü bağlama ile çok iyi iş gibi görünüyor , ama. Neden ifade güzergah daha mı iyi olur?
İfadenin çözümü de gösteren bir keman buldum: http://jsfiddle.net/maxisam/QrCXh/
CEVAP
neden kullanmak zorunda mıyım "{{title}}" ' @ ' ve "Başlık" ' = ' ile mi?
@ yerel/Yönerge kapsamında bir özellik bağlarDOM değerlendirmeye değer budur. Eğer kullanıyorsanız title=title1
title="title1"
, DOM değeri "başlık" sadece string title1
. öznitelik Eğer kullanım title="{{title}}"
değer DOM özniteliği "başlık" aralıklı değeri {{title}}
, dolayısıyla bu dizede ne olursa olsun üst kapsam özellik "başlık" şu anda ayarlamak için. Öznitelik değerleri her zaman dizeleri beri hep @ kullanırken Yönerge kapsamında bu özellik için bir dize değeri ile sona erecek.
= yerel/Yönerge kapsamında bir özelliğine bağlarbir üst kapsam özellik. DOM öznitelik değeri olarak =, üst model/kapsam özellik adı kullanın. = {{}}
s kullanamazsın.
@ , title="{{title}} and then some"
-- {{başlık}} aralıklı gibi şeyler yapabilirsiniz, dize "ve" ile birleştirilmiş. sonra Son art arda eklenmiş dize local/Yönerge kapsam özelliği alır. (=Sadece bunu yapamazsın @.)
@ Eğer bağlantı(ing) değer fonksiyonu kullanmak istiyorsanız attr.$observe('title', function(value) { ... })
kullanmak gerekir. E. g., if(scope.title == "...")
beklediğiniz gibi çalışmaz. Bu sadece bu asynchronouslyöznitelik erişim anlamına gelir unutmayın.
Eğer tek bir şablon. değeri kullanıyorsanız gerek yok kullanın gözlemlemek $() E. g., template: '<div>{{title}}</div>'
.
=, Kullanmana gerek yok $inceleyin.
ayrıca ebeveyn kapsamında doğrudan, bir öznitelik ile benim öğe dekorasyon olmadan erişebilir miyim?
Evet, ama eğer kullanmasanız bile sadece bir kapsam izole. *14 -- * -- ve sonra Direktifi yeni bir kapsam oluşturmak değil, sizin göreviniz bu satırı Kaldır. Üst kapsam kullanır. Sonra üst kapsam tüm özelliklerini doğrudan erişebilirsiniz.
Belgelere "Genellikle arzu üst kapsam", ama o iş gibi görünüyor çift yönlü bağlama çok iyi. bir ifade ile izole kapsam ve veri geçmek olduğunu söylüyor Neden ifade güzergah daha mı iyi olur?
Evet, çift yönlü bağlama local/Yönerge kapsamı sağlar ve veri paylaşımına ana kapsamı. "İfadesi bağlama" yönergesi bir ifadeyi aramak için izin verir (veya fonksiyon) DOM özniteliği tarafından tanımlanan ve aynı zamanda ifadeyi bağımsız değişken olarak veri iletebilir veya işlevi. Eğer üst ile veri paylaşmak için ihtiyacınız varsa, size sadece & sözdizimini kullanabilirsiniz bir işlev üst kapsam içinde tanımlanan isim vermek istiyorum.
Ayrıca Bkz
- Lukas's isolated scope blog post (kapakları @, =, &)
- dnc253's explanation@=
- my blog-like answer hakkında kapsamları --direktifleribölüm (Özet bölümünden önce alt tarafa, Avrupa Birliği (AB) kapsamında bir özellik için @ kullanır kapsam ve üst kapsam izole bir resmini ... ve başka bir için=
- What is the difference between & vs @ and = in angularJS
Polimer elemanları ve AngularJS direkt...
Ve angularjs derleme bağlantı fonksiyo...
& Vs @ ve angularJS = arasındaki fark ...
Bir URI, URL ve URN arasındaki fark ne...
Aramak ve uygulamak arasındaki fark ne...