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

时间:2015-02-28 16:21:15

标签: angularjs angular-ngmodel

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

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始终为false。

1 个答案:

答案 0 :(得分:1)

发布答案以便标记:

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

在您的控制器中:

$scope.time = {freeze: false };

在您看来:

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