2013-04-12 5 views
9

Korumalı gözlemlenebilir knockoutjs kullanıyorum ve onay kutularıyla ilgili bir sorun yaşıyorum. Korunan gözlenebilirlerin bir uygulaması here bulunabilir, ancak çok benzer gördüğüm birçok var.Onay kutuları korumalı onay kutuları nasıl kullanılır?

Sorunumu gösteren bir jsFiddle, here bulunabilir. İşte kemanın bir kısmı. çoğaltmak için

var ViewModel = function() { 
    var self = this; 

    self.protectedBool = ko.protectedObservable(true); 
    self.commit = function(){ 
     ko.commitProtectedObservables(self); 
    }; 
    self.rollback = function() { 
     ko.rollbackProtectedObservables(self); 
    }; 
}; 

$(function() { 
    ko.applyBindings(new ViewModel()); 
}); 

aşağıdakileri yapın: (onay kutusu doğrudur için varsayılan değer)

  • tıklayın
  • Not "Commit"
  • konudaki geçersiz onay kutusunu

    1. Çalıştır keman o değer şimdi yanlış olarak gösterir (bu doğru davranış)
    2. Kulağı tekrar çalıştırın (onay kutusunun varsayılan değeri true)
    3. işaretini kaldırın onay kutusunu sonra
    4. tıklayın
    5. Sen değeri tıkladığınız zaman kontrol edildi rağmen yanlış/kontrolsüz olarak ayarlanır göreceksiniz "Commit" ("Commit" tıklamadan önce) hemen kontrol "Commit ".

    protectedObservable tanımı içine bilgisayarlı gözlemlenebilir içinde "yazma" Olay değil olsun onay kutusunu değiştirmek ve değer taahhüt eder böylece, bunun yanlış değer işlemekle oluyor ikinci kez ateş yapar.

    Ayrıca korunabilirObservable dizeleri için mükemmel çalışır. Herhangi bir rehberlik büyük takdir edilecektir. Uygulaması çok eskidir.

  • +0

    - Yeni KO sürümleri için

    aynı yazarın (Ryan Niemeyer) tarafından uygulanan editör desen bakın. Bu yüzden bu çok hacky çözümünü bir yorum olarak gönderiyorum: http://jsfiddle.net/CyHyW/ – nemesv

    +0

    Mükemmel! Cevabınız için teşekkürler! – rhoadsce

    +1

    'protectedObservable''ın uygulaması çok eskidir. Sanırım sadece eski KO sürümü (<2) ile çalışır. Yeni KO için, aynı yazarın (Ryan Niemeyer) uyguladığı editör modeline bakın - http://www.knockmeout.net/2013/01/simple-editor-pattern-knockout-js.html –

    cevap