2015-03-05 21 views
8

Kullanıcı düğmeyi tıklattığında ve sunucu bazı verileri işlerken knockout.js aracını kullanarak bir düğmeyi devre dışı bırakmak istiyorum. Nakavt eğitiminde example'a bakıyorum ama bir şey eksik görünüyor. Ben false görünümü modelinde bir gözlemlenebilir belirledikknockout.js kullanarak bir düğme nasıl etkinleştirilir veya devre dışı bırakılır

<body> 
    <form id="form1" runat="server" > 
    <h1 style="text-align: center">Select the item(s) you want.</h1> 
     <br /> 
     <br /> 
     <div id="buttons" style="text-align: center"> 
      <button data-inline="true" data-bind="click: submit, enable: canSubmit" >Submit</button> 
      <button data-inline="true" data-bind="click: cancel">Cancel</button> 
     </div> 

:

ben data-bind içinde enable: parçası var. Ancak, görünüm başlatıldığında, sayfadaki düğme etkindir. Bu yüzden bir veri bağlama sorunu olduğunu düşünüyorum. Sunucu şey yapıyor tamamlanana kadar

function ViewModel() { 
    var self = this; 
    self.selectedItems = ko.observableArray([]); 
    // we should start off not being able to click the submit button 
    self.canSubmit = ko.observable(false); 
}; 

Ben kullanıcı Gönder düğmesini oturuncaya kadar düğmesi etkin olmasını istiyorum, sonra devre dışı bırakın.

self.submit = function() { 
     // disable submit button 
     self.canSubmit = false; 
     // do stuff 
     self.canSubmit = true; 
}; 

nasıl düğmeye enable gözlemlenebilir değeri bağlama mı?

cevap

5

Gözlemlenebilir olanı düz js değişkenleriyle değiştiriyorsunuz. canSubmit gözlenebilir, yani fonksiyonunu çağırarak değerini değiştirmek:

self.submit = function() { 
     // disable submit button 
     self.canSubmit(false); 
     // do stuff 
     self.canSubmit(true); 
}; 

kalanı olduğu gibi gayet iyi.

4

Gözlemlenebilir değerinizi güncelleştirmiyorsunuz, self.canSubmit'in referansını değiştirerek boolean'a işaret ediyorsunuz.

self.submit = function() { 
     // disable submit button 
     self.canSubmit(false); 
     // do stuff 
     self.canSubmit(true); 
}; 
:

için self.submit işlevini değiştirmek

İlgili konular