2017-10-17 62 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); 

你被赋予了新的价值,你的财产,而不是更新的可观测值