angularJS绑定字符串中的变量

时间:2014-03-05 12:32:55

标签: javascript angularjs bind

我有一个下拉菜单:

<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()

1 个答案:

答案 0 :(得分:0)

像这样改变:

<select ng-model="item.serverName" ng-options="item.serverID as item.serverName for item in choiceServers"></select>

如果它也不起作用, 当您尝试使用脚本文件$ scope绑定数据时。 choiceServers未更新。因此,它一次又一次地提供相同的数据。

使用$ scope。$ root而不是$ scope