2012-01-18 30 views
8

dize adı ile belirlenir: Ben nakavt kullanıyorumdinamik ben iki soru lütfen var

(Ben KO çaylak sry değilim) ve ben belirli bir değer atamak istiyoruz Bir tıklama olayı üzerinde gözlemlenebilir ama sadece tıklama olayı (ve veri-bind = tıkla) değerine geçeceğim) üzerinde belirlenebilen nakavt ... lütfen yapılabilir ... knockout gözlemlenebilir değişkeni alabilir miyim hangi gözlemlenebilir olduğunu bilmek yerine sadece bir isim (dize değeri) yerine önceden bir değer atayacağım?

Ve ikinci olarak, daha az imkansız, eğer böyle bir işlev ko.ObservableByName (stringName) varsa, bir şekilde kullanmak ve sayfa yüklendikten sonra çoklu seçim öğelerinin ön seçimini atamak mümkün ... ve nasıl lütfen? Sonra ve:

Bunu yapmaya çalıştık ... Ben veri bağlama kullandım = "loadData.bind ($ veri 'param1', 'param2') tıklayın" 'hattı boyunca bir şey gider benim nakavt ViewModel bir olay işleyicisi oluşturarak bu param1 ve param2 dize değerleri elde edebilmek m:

self.loadData = function (src, dest) { 
    //dest is 'param1', src is 'param2', both are stings 
    if (src == 'param1') 
     self.p1observable($('#' + dest).val()); 
    else 
     self.p2observable($('#' + dest).val()); 
} 

bu benim en büyük sorunum ben inşa etmek zorunda olduğunu P1/p2 gözlenebilirler ile fonksiyon zaten belirtilmiş ve İçinde kodlanmış, ama gerçekten param1 ve param2'yi, benim gözlemlenebilirlerimden bazılarının isimleri veya referansları olarak kullanılmasını istiyorum. yine de başka bir gözlemlenebilirlik değerini ilkinden kopyalamak istiyorum) ve bu yüzden tıklama fonksiyonu çağrısında doğrudan benim seçimimden gözlemlenebilir (ve çok sayıda küçük fonksiyona sahip değil). ...

Belki de yanlış yöne gidiyorum? Belki de string değerlerini hiç geçmemeliydim ... Belki de gözlemlenebilir bir nesneyi geçmeye çalışmalıydım, fakat bunu bir veri-bind içinde nasıl yapabilirim, sadece myViewModel.myObservable ya da bunun gibi bir şey yazıyor musunuz? Eğer üst nesneye varsa

+0

Şu ana kadar neler yaptığınıza dair bir örnek gönderir misiniz? – ericb

cevap

15

, o zaman bu sözdizimini kullanarak bir gözlemlenebilir erişebilirsiniz:

viewModel[observableName]

ve benzeri değeri:

İşte viewModel[observableName](newValue)

bir örnek Bir açılır menüden özellik adını seçebileceğiniz ve ardından değeri ve düğmenin doğrudan gözlenebilir bir değere ayarlandığı başka bir değeri ayarlayabileceğiniz yer: http://jsfiddle.net/rniemeyer/CTnUQ/

+0

neredeyse tam olarak ihtiyacım olan şey, bu yüzden teşekkürler sürü ... sadece bir sidenote, eğer viewModel içinde bu [observableName] notasyonu kullanıyorsa ... ama sanırım dışarıdan kullanıyorsan işe yarayacak. viewModel yapı, ben emin değilim, örneğin bir kaç farklı sayfa vardı ve her sayfa bir harici viewModel komut dosyası yüklemek olurdu eğer bu işe yarar mıdır, o zaman çok sayıda sayfa aynı veri örneklerini kullanır veya her biri olurdu harici bir .js dosyasından yüklenmiş olan kendi viewModel kopyası Bunu yakında deneyeceğim, JQMobile ve WP7_'deki çözülemeyen changePage hatası nedeniyle sıkışıp kaldım – dada