SORU
27 Aralık 2012, PERŞEMBE


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
28 Aralık 2012, Cuma


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hidetake takayama

    hidetake tak

    3 Mart 2009
  • Hot For Nutrition

    Hot For Nutr

    26 ŞUBAT 2007
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007