İzole kapsamı olan bir yönergem var (böylece yönergeyi başka yerlerde yeniden kullanabilirim) ve bu yönergeyi bir ile ng-repeat
kullandığımda çalışmıyor.
Bu konudaki tüm belgeleri ve Stack Overflow yanıtlarını okudum ve sorunları anladım. Her zamanki sorunlardan kaçtığıma inanıyorum.
Dolayısıyla, ng-repeat
direktif tarafından oluşturulan kapsam nedeniyle kodumun başarısız olduğunu anlıyorum . Benim direktifim bir izolat kapsamı yaratıyor ve üst kapsamdaki bir nesneye iki yönlü veri bağlama yapıyor. Yönergem bu bağlı değişkene yeni bir nesne-değeri atayacak ve yönergem olmadan kullanıldığında ng-repeat
(ana değişken doğru şekilde güncellenir) bu mükemmel çalışır . Bununla birlikte, ile ng-repeat
atama, ng-repeat
kapsamda yeni bir değişken oluşturur ve ana değişken değişikliği görmez. Bütün bunlar okuduklarıma dayanarak beklendiği gibi.
Ayrıca, belirli bir öğe üzerinde birden çok yönerge olduğunda, yalnızca bir kapsamın oluşturulduğunu okudum. Ve priority
direktiflerin uygulanma sırasını tanımlamak için her bir direktifte a ayarlanabilir; yönergeler önceliğe göre sıralanır ve sonra derleme işlevleri çağrılır ( http://docs.angularjs.org/guide/directive adresinde öncelik kelimesini arayın ).
Bu nedenle, yönergemin ilk önce çalıştığından ve sonunda bir izolat kapsamı oluşturduğundan emin olmak için önceliği kullanabileceğimi umuyordum ve ng-repeat
çalıştırıldığında, ana kapsamdan prototip olarak miras alan bir kapsam oluşturmak yerine yalıtım kapsamını yeniden kullanır. ng-repeat
Belgelerine durumları öncelik düzeyinde olduğu direktif ishal olduğunu 1000
. Daha 1
yüksek bir öncelik seviyesi mi yoksa daha düşük bir öncelik seviyesi mi olduğu net değildir . 1
Direktifimde öncelik seviyesini kullandığımda bir fark yaratmadı, bu yüzden denedim 2000
. Ancak bu işleri daha da kötüleştiriyor: iki yönlü bağlamalarım oluyor undefined
ve yönergem hiçbir şey göstermiyor.
Sorunumu göstermek için bir keman oluşturdum . Yönergemdeki priority
ayarı yorumladım . İsim nesnelerinin bir listesi ve isim nesnesindeki ad name-row
ve soyad alanlarını gösteren bir yönergem var. Görüntülenen bir ada tıklandığında, selected
ana kapsamda bir değişken ayarlamasını istiyorum . İsim dizisi, selected
değişken name-row
iki yönlü veri bağlama kullanılarak yönergeye aktarılır .
Ana kapsamdaki işlevleri çağırarak bunu nasıl çalıştıracağımı biliyorum. Ayrıca selected
başka bir nesnenin içindeyse ve dış nesneye bağlanırsam, her şeyin işe yarayacağını da biliyorum . Ancak şu anda bu çözümlerle ilgilenmiyorum.
Bunun yerine, sahip olduğum sorular:
ng-repeat
Üst kapsamdan prototip olarak miras alan bir kapsam oluşturmayı nasıl engelleyebilirim ve bunun yerine yönergemin izolat kapsamını kullanmasını nasıl sağlayabilirim?2000
Direktifimdeki öncelik seviyesi neden çalışmıyor?- Batarang kullanarak, ne tür bir kapsamın kullanımda olduğunu bilmek mümkün mü?
scope: true
, direktifiniz için kullanmanızı öneririm . Ayrıca bakınız (henüz yapmadıysanız) stackoverflow.com/questions/14914213/… Ayrıca, bir direktifin birden fazla yerde kullanılması otomatik olarak bir izolat kapsamı kullanmamız gerektiği anlamına gelmez.