我有一个简单的表单,用户可以在其中选择一种语言,然后按保存。 <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问题没有帮助。
答案 0 :(得分:0)
这也可能是参考问题。
尝试使用$scope.interviewLanguage = angular.copy($scope.usersLanguage);
答案 1 :(得分:0)
好的,我发现了问题所在。上面的HTML中没有显示的是,我的整个HTML都用<div ng-if="condition">
包裹了。
然后在某些状态下,将删除DOM并断开绑定。
将ng-if
更改为ng-show
解决了该问题,因为后者仅隐藏/显示DOM,而不是销毁它。