2013-05-21 31 views
78

Üçüncü satırda {{f = ...}} ifadesinin forecast[day.iso] içeriğini dışarıda yazdırmasını nasıl engelleyebilirim?AngularJS: Şablonun içinde bir değişken nasıl ayarlanır?

Her yineleme için forecast[day.iso].temperature kullanmaktan kaçınmak istiyorum.

<div ng-repeat="day in forecast_days"> 
    {{$index}} - {{day.iso}} - {{day.name}} 
    {{f = forecast[day.iso]}} 
    Temperature: {{f.temperature}}<br> 
    Humidity: {{f.humidity}}<br> 
    ... 
</div> 
+2

, ama yararlı ipucu {= tahmin [day.iso] f {; ""}} kullanmaktır olacağı gibi görünümde hiçbir şey yazdırmayın. –

cevap

160

Kullanım ngInit: http://docs.angularjs.org/api/ng.directive:ngInit

<div ng-repeat="day in forecast_days" ng-init="f = forecast[day.iso]"> 
    {{$index}} - {{day.iso}} - {{day.name}} 
    Temperature: {{f.temperature}}<br> 
    Humidity: {{f.humidity}}<br> 
    ... 
</div> 

Örnek: http://jsfiddle.net/coma/UV4qF/

+27

Daha fazla bir tane istiyorsanız, bir değişken onları noktalı virgülle ayırın ';' – bentzy

+0

Başlatılmamış ipucu için ipucu ... şablon yapınıza bağlı olarak, sadece değişkeninizin son değerini gösteren tüm kayıtlarla son bulabilirsin (benim durumumda, Angular daha sonraki bir özet döngüsündeki ikameleri güncelledi, çünkü hepsi bağlı Aynı ifadeye)! Bu durumla mücadele etmek için, değişkeni yinelenen geçerli kaydın bir özelliği olarak atayabilirsiniz (kullanım durumunuza pratikse). Yukarıdaki örnekte bu, 'ng-init =" day.f = forecast [day.iso] "olacaktır –

24

Bu not the best answer, ama onun da bir seçenek: Birden fazla ifade arada kullanabilirsiniz, ama sadece sonuncusu gerçekleştirildiğinden , ifadenizi "" ile bitirebilir ve değişkeniniz gizlenecektir.

Yani, ile değişken tanımlamak olabilir: O bir cevap olmayabilir

{{f = forecast[day.iso]; ""}} 
+0

Bu belgelenmiş bir özellik midir? –

+0

@DanielF, Bulamadık. Sadece gördüm [bu] (http://stackoverflow.com/questions/16665319/how-to-set-a-variable-inside-of-a-template#comment54563800_16665319) yorumunu yaptı, fikri test etti, beğendi ve karar verdi. daha fazla görünürlüğe sahip olduğundan ve kaybetmek daha zor olduğundan yanıt olarak ekleyin. – Zanon

+0

@DanielF, sadece aynı çözümü öneren bu yüksek oyla [cevap] (http://stackoverflow.com/a/28432472/1476885) buldum. Ayrıca bir doc bağlantısı yok. – Zanon

İlgili konular