首页 > 解决方案 > 在我的选择中,我无法在我想要的值上设置默认选项

问题描述

我是 Angular 的新手,但我不知道还有什么可以尝试解决这个问题。

我有一条消息,我可以用一个按钮翻译。这一切都正常工作。就像您在图像中看到的那样,选择中有一个语言列表。登录的用户具有用户语言设置。这是荷兰语、英语或法语。(对于应用程序的一般翻译,只有 3 种语言。这些语言用于应用程序的标准文本。)在选择中有更多的语言,用于消息的翻译。所有这些都正常工作,包括翻译。

我遇到的问题是,当页面加载时,我希望所选选项成为用户的默认语言。但是,它没有选择(在我的示例中为英语),而是停留在选择顶部的空行中,并带有一个空的描述。当我测试这后面的代码时,它说它的 id 是“EN”,这意味着他实际上在加载时收到了值,但由于某种原因它没有选择正确的行。但是当我查看 html 时,其他值都是这样的 'STRING:EN', 'STRING:AM', ...

我相信这是因为我使用字符串作为 id,并且它认为 id 不一样,所以它创建了一个没有描述的新字符串。我不确定这些。我也尝试过手动设置默认选项,但这也不起作用。

带有翻译按钮的列表框这是图像

html页面:

<select id="languageListbox" name="LanguageSelect" style="width: 140px;"
        ng-show="UI.message.iCanReply(messagedetail) && (!UI.message.actionsAreVisible(messagedetail) || UI.message.performActionsVisibleBecauseOfSize)"
        tabindex="0" aria-multiselectable="false"
        aria-expanded="false" role="listbox"
        ng-options="language.id as language.description for language in languages" 
        ng-model="selectedLanguage"
        ng-init="selectedLanguage.id = userLanguage">
</select>

控制器:(仅零件)

 $scope.languages = myLanguages.translateLanguages;
 ...
 function init() {
    ...
    $scope.userLanguage = $sessionStorage.user.DefaultLanguage;
    ...
    }

资源文件:

app.constant("myLanguages", {
"languages": [
    { id: 'NL', description: 'Dutch' },
    { id: 'EN', description: 'English' },
    { id: 'FR', description: 'French' }
],
"translateLanguages": [
    { id: 'AF', description: 'Afrikaans' },
    { id: 'SQ', description: 'Albanian' },
    ...
    { id: 'NL', description: 'Dutch' },
    { id: 'EN', description: 'English' },
    ...
]
});

标签: angularjsselect

解决方案


在您的 ng-options 中尝试添加track by language.id

我认为您的 ng-model 是一个对象(而不是语言 ID),您需要使用语法跟踪来帮助 AngularJS 唯一地识别集合中的每个项目

https://docs.angularjs.org/api/ng/directive/ngRepeat#tracking-and-duplicates


推荐阅读