角度变量在编辑输入字段之前不显示
Angular variables not appearing until editing input field
我一直在为一个简单的基于节点.js聊天服务器做一些 Angular 演示工作。
我可以发布节点服务器,但我怀疑这是问题所在,因为服务器会立即将数据返回到页面和日志。
将消息提交到服务器后,它不会更新下面的框以显示您的消息,直到您再次在输入框中键入。
爪哇语
angular.module('main', [])
.controller('main-div', function($scope, $http) {
$scope.hasLoggedIn = false;
var loginName;
$scope.messageList = [];
$scope.login = function() {
if ($scope.loginName) {
// Perhaps have some validation so you can't duplicate names
loginName = $scope.loginName;
console.log($scope.loginName + " has logged in!");
$scope.hasLoggedIn = true;
// They then have the ability to send off messages once logged in
var connection = new WebSocket("ws://"+window.location.hostname+":8081");
// Send the loginName first, If 1st message then sets username
// Else if not then just stores message
connection.onopen = function () {
console.log("Connection opened by: " + $scope.loginName)
connection.send($scope.loginName);
$scope.submit = function() {
var chatMessage = $scope.chatMessage;
if (chatMessage) {
connection.send(chatMessage);
$scope.chatMessage = '';
}
};
}
connection.onmessage = function (event) {
console.log("Got the message here");
$scope.messageList.push(event.data);
console.log("Pushed");
console.log($scope.messageList);
}
connection.onclose = function () {
console.log("Connection closed")
}
connection.onerror = function () {
console.error("Connection error")
}
}
};
})
索引.html
<html>
<head>
<meta charset="utf-8">
<title>Chat</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script type="text/javascript" src="/angular.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/>
</head>
<body ng-app="main">
<div class="col-md-8 col-xs-offset-2" ng-controller="main-div">
<div ng-hide="hasLoggedIn">
<h1>Please Login</h1>
<form ng-submit="login()">
<input type="text" ng-model="loginName" placeholder="Please enter your name">
<input type="submit" id="submit" value="Submit" />
</form>
</div>
<div class="col-md-8 col-xs-offset-2" ng-show="hasLoggedIn">
<h1> Welcome {{loginName}}</h1>
<div class="chat">
<form ng-submit="submit()">
<input type="text" ng-model="chatMessage" placeholder="Please enter a message">
<input type="submit" id="submit" value="Submit" />
</form>
<div ng-repeat="message in messageList">
{{message}}
</div>
</div>
</div>
</div>
</body>
</html>
浏览器中的所有控制台日志都会立即显示,我发送消息和记录在:
connection.onmessage = function (event) {
console.log("Got the message here");
$scope.messageList.push(event.data);
console.log("Pushed");
console.log($scope.messageList);
}
谢谢奥利弗
您可以尝试为 $scope.messageList.push(event.data) 添加$apply,如下所示:
connection.onmessage = function (event) {
console.log("Got the message here");
$scope.$apply(function() {
$scope.messageList.push(event.data);
});
console.log("Pushed");
console.log($scope.messageList);
}
相关文章:
- 如果选择单选按钮,则显示字段
- 将单击事件添加到显示字段
- 如何在android中提取和显示字段
- yii2:依赖于Action的条件显示/显示字段
- ExtJs组合框显示字段编码
- 用于显示字段的工具提示和显示 Jquery 验证中的错误的工具提示器
- 根据输入值隐藏/显示字段
- 实时表编辑其他 mySQL 表中的显示字段
- ExtJS 5:显示字段绑定性能
- EXT JS :在组合框中,如何为不在存储中的记录设置显示字段
- 带有模板的显示字段
- ExtJS 4 组合框在表单绑定上显示值字段而不是显示字段
- web2py控件窗体,选择选项时显示字段
- HTML表单根据所选内容切换隐藏/显示字段
- 隐藏和显示字段集
- 如何制作html5和java脚本中所需的显示字段?下面是我的代码
- Javascript:阻止浏览器在按下向下键时显示字段的输入历史记录
- 反应 ― 显示字段但获取对象
- 如何根据编辑页上复选框中的值隐藏和显示字段
- 在asp.net中选择单选按钮值时隐藏/显示字段