我的控制器中有以下代码:
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。
答案 0 :(得分:1)
发布答案以便标记:
尝试使用点表示法。像ng-model =&#34; socket.timeFreeze&#34;和$ scope.socket.timeFreeze。 JB Nizet使用了更好的命名约定,所以我要向他借用:
在您的控制器中:
$scope.time = {freeze: false };
在您看来:
<input type="checkbox" ng-model="time.freeze">