Angular Js ng-model 不更新内部函数中的变量

Angular Js ng-model not updating variable in an inner function

我的控制器中有以下代码:

appControllers.controller('myCtrl', [ '$scope',
function($scope) {
    $scope.timeFreeze = false;

    $scope.ws = new WebSocket("ws://localhost:8080/ws");

    $scope.ws.onopen = function() {
        $scope.ws.send('{...}');
    };

    $scope.ws.onmessage = function (evt) {
        var received_msg = JSON.parse(evt.data);
        //...do something with the data...
        console.log($scope.timeFreeze); // This is ALWAYS false!!! Why?
        if ( $scope.timeFreeze === false) {
            $scope.$apply();
        } else {
            console.log("Frozen!"); // This never runs!!!
        }
    };

    $scope.ws.onclose = function() {
        console.log("Connection is closed...");
    };
}

]);

在我的 html 中我有:

<div>
    <label>Freeze?</label>
    <input type="checkbox" ng-model="timeFreeze"/>
</div>

意味着当复选框被选中时,代码应该在控制台中输出 "Frozen!"。不幸的是,此代码永远不会 运行!尽管我为复选框设置了 ng-model,但 $scope.timeFreeze 总是错误的。

发布答案以便对其进行标记:

尝试使用点表示法。类似于 ng-model="socket.timeFreeze" 和 $scope.socket.timeFreeze。 JB Nizet 使用了更好的命名约定,所以我要向他借用:

在你的控制器中:

$scope.time = {freeze: false };

在您看来:

<input type="checkbox" ng-model="time.freeze">