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">
我的控制器中有以下代码:
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">