Knockout.js布尔值没有更新

时间:2017-10-17 13:47:31

标签: javascript knockout.js

我尝试启用/禁用输入字段。

app.controller("ContactController", function ($scope, $http) {



$scope.EmailDetails = {
    Phone: null,
    Email: null,
    Name: null,
    Subject: null,
    Body: null
};

$scope.EmailDetailsArr = [
    $scope.Phone,
    $scope.Email,
    $scope.Name,
    $scope.Subject,
    $scope.Body
];

$scope.EmailDetails = {
    Phone: $scope.Phone,
    Email: $scope.Email,
    Name: $scope.Name,
    Subject: $scope.Subject,
    Body: $scope.Body
};
$scope.CreateEmail = function () {

    console.log($scope.EmailDetails);
    console.log(JSON.stringify($scope.EmailDetails));

    $http({
        method: 'POST',
        url: '/ContactUs',
        data: JSON.stringify($scope.EmailDetail)
    });
}

我的淘汰赛

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

内更改时,我无法在禁用/启用之间切换输入

socket.on(更新了更新,为什么self.messages(没有? (要清楚变量JS端是否已更新,但数据绑定不是。

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

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

您为属性分配了一个新值,而不是更新可观察值。