angular-带下拉菜单的转换在 Chromium 下不起作用

angular-tanslate with dropdown doesn't work under Chromium

我翻译了一个应用程序。如果我使用 <ul> 作为语言 select,一切正常。当我切换到 <select> 时,我在 chromium 下遇到了问题。但是使用 Firefox 仍然可以正常工作。这里有 2 个代码片段:

  1. HTML部分

<select id="SelectLang" ng-controller="LanguageSelectController">
  <option ng-click="changeLang('de_DE')">{{'LANGUAGE_FIELD_GERMAN'|translate}}</option>
  <option ng-click="changeLang('en_EN')">{{'LANGUAGE_FIELD_ENGLISH'|translate}}</option>
</select>

  1. JS 部分
app.controller('LanguageSelectController', function ($scope, $translate) {
    $scope.changeLang = function (key) {
        $translate.use(key).then(function (key) {
            console.log("Sprache zu " + key + " gewechselt.");
    }, function (key) {
            console.log("Irgendwas lief schief.");
        });
    };
});

有没有人遇到同样的问题?有什么建议吗?

看看你的 plunker,我已经用一个工作版本更新了它:

http://plnkr.co/edit/6P4V5qD7SIcTdKpYxWm2?p=preview

有几件事可能导致了这个问题。我已将更改的评论放在 plunker 中,并在下面列出。要查看的文件是 script.jsindex.html.

你的 plunker 缺少的是你没有在 html 中定义 ng-app 属性。我将 ng-app="app" 添加到 body 元素。没有这个,angular 应用程序将不会 bootstrap。所以你的 angular 中的 none 被执行了。

配置块末尾还缺少右括号,这可能是您在编写 plunker 时出现的,但它也可能导致了问题。

最后,script.js 文件需要在 angular.js 文件之后加载。否则 angular 未在解析 script.js 时定义。

编辑:

我更新了插件:

http://plnkr.co/edit/54Fk0uP9jn8CzmDnNZNr?p=preview

我想我误解了这个问题。问题在于如何编写 select 元素。 option 元素上的 ng-click 似乎没有在 chrome 中触发。在 select 元素本身上使用 ng-change 并在元素上使用 ng-model 可以解决此问题。它还稍微清理了 html 并使其更容易扩展更多选项。