在angularjs中,为什么select中ng-model的值保持不变?

时间:2018-09-21 10:55:20

标签: angularjs

我有一个简单的表单,用户可以在其中选择一种语言,然后按保存。 <select>的初始值是网页上的用户语言。

我的控制器中包含以下JS代码:

$scope.usersLanguage = loadUsersLanguage(); // e.g. "en"
$scope.allLanguages = loadAllLanguages(); // array of all languages
$scope.interviewLanguage = $scope.usersLanguage; // preselecting the drodown

$scope.logThis() = function() {
    console.log($scope.interviewLanguage); // Always prints "en"
} 

和以下HTML

<select
    ng-model="interviewLanguage"
    ng-change="logThis()"
    ng-options="language.Id as language.Name for language in allLanguages"
></select>

ng-change仅用于记录目的。

我的问题是,无论我将语言下拉菜单更改为什么,它始终会打印初始值。永不改变。而且我仔细检查了数组allLanguages,它们都有唯一的ID和名称。

有什么想法吗?以前类似的StackOverflow问题没有帮助。

2 个答案:

答案 0 :(得分:0)

这也可能是参考问题。 尝试使用$scope.interviewLanguage = angular.copy($scope.usersLanguage);

答案 1 :(得分:0)

好的,我发现了问题所在。上面的HTML中没有显示的是,我的整个HTML都用<div ng-if="condition">包裹了。

然后在某些状态下,将删除DOM并断开绑定。

ng-if更改为ng-show解决了该问题,因为后者仅隐藏/显示DOM,而不是销毁它。