2013-06-18 36 views
7

Bazı aygıtların geçerli durumlarına genel bakış için verileri tutan sayfamda bir viewModel var. Şimdiye kadar her şey bir sorun dışında harika çalışıyor: viewModel'imdeki başka bir değere bağlı olarak div öğesinin başlık niteliğini ayarlamanız gerekiyor.Knockout.js: koşullu olarak div title title title

Ben temelde (div etiketinin veri bağlama özniteliği içinde) böyle başlık niteliği ayarlayabilirsiniz biliyoruz:

attr: { title: 'Some title' } 

yukarıdaki ifadeyi kullanarak, "Bazı başlığı" araç ipucu zaman olarak ayarlanmış olur div'u gezdirmek.

attr: { title: ConnectState.Value() } 

ve ViewModel doğru doldurulur alır böylece, şu andaki ViewModel doğru veri değeri (bir tamsayı) verir: Ayrıca bu ayarlayabilir.

Şimdi böyle bir şey için bu değiştirmeniz gerekir:

attr: { 
    title: { 
    'Text 1': ConnectState.Value() == 0, 
    'Text 2': ConnectState.Value() == 1, 
    'Text 3': ConnectState.Value() == 2, 
    'Text 4': ConnectState.Value() == 3 
    } 
} 

Yukarıdaki örnek sadece verecektir "[object Object]" başlık olarak (sırasıyla ipucu olarak.). Bunu nasıl düzeltebilirim? Çok teşekkürler!

+1

Neden attr' yazmıyorsun metin örneğinizden daha karmaşık mı? – nemesv

+0

Maalesef öyle. ConnectState değeri "bağlı", "bağlantısı kesildi", "bağlanıyor" vb. Çeviren bir numaradır. – Robert

cevap

9

Görüntü modelinizde bir yardımcı program tanımlayın. Sonra

self.ConnectTitle = ko.computed(function() { 
    return 'Text ' + (self.ConnectState.Value() + 1).toString(); 
}); 

: -

attr: { title: ConnectTitle } 

sizin bağlayıcı olarak. Metniniz basit bir örnekse, hesaplanan fonksiyonun içeriğini gereksinimlerinize uygun bir şekilde değiştirebilirsiniz.

+0

Öneriniz için teşekkürler. Veriye bağlı bir tablo satırında ayarlamak zorunda olduğum başlık özniteliği var: Bu ConnectTitle işlevini dinamik olarak kullandığım viewModels "Satırlar" koleksiyonundaki her öğeye uyguladım. , sayfaya bağlı olarak. Bunu nasıl başaracağımı anlayamadım. – Robert

+1

Her satırınız bir nesne tarafından temsil edilir, doğru mu? Javascript görünüm modelinizi yayınlayın ve bir göz atalım. –

+0

İşte tipik viewModel verilerinin bir Json dökümü: http://jsfiddle.net/AMLk7/ – Robert

2

Böyle üçlü operatörü, bir şey kullanabilirsiniz: {title: 'Metin' + (ConnectState.Value() + 1)} `Ya gerçek

attr: { 
    title: ConnectState.Value() == 0 ? 'Text 1' : 
     ConnectState.Value() == 1 ? 'Text 2' : 
     ConnectState.Value() == 2 ? 'Text 3' : 
     'Text 4' 
} 
İlgili konular