2017-10-17 83 views
0

我試圖啓用/禁用輸入字段。Knockout.js布爾沒有更新

<input data-bind="disable: chatDisabled" id="send-message" type="textarea" class="input-area" value=""> 

而且我knockoutJS

function MessagesViewModel() { 
    var self = this; 
    var socket = io.connect('http://127.0.0.1:4000'); 

    self.messages = ko.observableArray([]); 
    self.chatSend = ko.observable(); 
    self.questionChoice = ko.observable(); 
    self.chatDisabled = ko.observable(false); 


    socket.on('receiveMessages', function(data) { 
     self.messages(data.messages); 
     var last = data.messages[data.messages.length-1]; 
     self.chatDisabled = last.enforce || false; 
     scrollToBottom(); 
    }); 
} 

ko.applyBindings(new MessagesViewModel()); 

我已經成功地得到其他部分的工作,如當數組更新其屏幕填入郵件的列表。然而,對於我的生活,我無法得到輸入切換禁用/啓用時,它在socket.on(

self.messages(更新更正所以爲什麼self.chatDisabled不是? (要清楚不過的變量JS側更新它的數據綁定不是

+3

'self.chatDisabled(last.enforce || false;)'? – peinearydevelopment

+0

@peinearydevelopment是正確的,您正在將chatDisabled的值更改爲等於last.enforce || false而不是更新observable的內容。 – Budhead2004

+0

AH我是個白癡,謝謝/ facepalm – jackdh

回答

2

這應該做的伎倆:

self.chatDisabled(last.enforce || false); 

你被賦予了新的價值,你的財產,而不是更新的可觀測值