2017-10-17 4 views
0

입력 필드를 활성화/비활성화하려고합니다.Knockout.js 부울이 업데이트되지 않습니다.

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

내가 다른 부분 배열이 업데이트 될 때 화면 채우기에 메시지 목록을 가지는 등의 작업을 진행하게 관리했습니다

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()); 

내 knockoutJS. 그러나 내 인생에 대한 입력을 변경할 때 활성화/비활성화 사이에서 전환 할 때 socket.on(

self.messages( 업데이트가 수정되었으므로 self.chatDisabled이 아닌 이유는 무엇입니까? (그것을 데이터 바인딩이 아닌 변수 JS 측 그러나 업데이트됩니다 명확하게하려면

+3

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

+0

@peinearydevelopment가 정확합니다. 관찰 가능 항목의 내용을 업데이트하는 대신 chatDisabled 값을 last.enforce || false와 같게 변경합니다. – Budhead2004

+0

AH 나는 바보 야, 고마워/facepalm – jackdh

답변

2

이 트릭을 수행해야합니다.

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

당신은 당신의 속성에 새 값을 할당하는 대신 관찰을 업데이트 한을 값.