我有一个下拉菜单:
<select ng-model="dropdown" ng-options="item.serverID as item.serverName for item in choiceServers"></select>
下拉菜单的不同项目位于数组中:choiceServers。 此数组在此期间更改,添加新项目。
问题是当我使用下拉菜单时,我总是有相同的初始项目,变量choiceServers没有在我的html文件中更新。
我曾尝试使用双卷曲等等,但我没有弄清楚如何做到这一点。我需要不断更新变量choiceServers,以便它与我修改它的jsfile中的项目相同。
感谢您的帮助!
编辑:
这里是changeServers的更改位置:
//Drop-down menu
$scope.choiceServers = [ //Static list for the moment
{serverID: 1, serverName : 'Server 1'},
{serverID: 2, serverName : 'Server 2'},
{serverID: 3, serverName : 'Server 3'},
{serverID: 4, serverName : 'Server 4'},
];
socket.on('newServer', function(newServer){ //New Agent/server
$scope.choiceServers.push(newServer); //We add his PID in the list
});
$scope.dropdown = 1; // In order to avoid a blank as a first option
这是事件发出:
//Dropdown menu
var lastID = 5; // doesn't matter for the moment
var newServer = {serverID : lastID , serverName : PID };
socket.broadcast.emit('newServer', newServer);
服务器向我发送一个对象{serverID,serverName},然后我推送它。 我已经检查过push函数正在运行,choiceServer有越来越多的项目(每次调用事件时)
编辑2:
好的,我终于找到了。我必须在更新choiceServers
之后添加$ scope。$ apply()答案 0 :(得分:0)
像这样改变:
<select ng-model="item.serverName" ng-options="item.serverID as item.serverName for item in choiceServers"></select>
如果它也不起作用, 当您尝试使用脚本文件$ scope绑定数据时。 choiceServers未更新。因此,它一次又一次地提供相同的数据。
或
使用$ scope。$ root而不是$ scope