我已翻译了一个应用程序。如果我使用<ul>
进行语言选择,一切正常。当我切换到<select>
时,我在铬下遇到了问题。但随着Firefox仍然工作正常。这里有2个代码片段:
<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>
&#13;
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.");
});
};
});
有没有人有同样的问题?有什么建议吗?
答案 0 :(得分:1)
看看你的plunker,我已经用一个工作版本更新了它:
http://plnkr.co/edit/6P4V5qD7SIcTdKpYxWm2?p=preview
有一些可能导致问题的事情。我已经在plunker中添加了注释,并在下面列出了它们。要查看的文件是script.js
和index.html
。
你的plunker缺少的是你没有在html中定义ng-app
属性。我将ng-app="app"
添加到body元素中。没有这个,角度应用程序将无法自举。所以没有任何角度被执行。
在配置块的末尾还有一个缺少的结束括号,这可能只是在你编写plunker时,但它可能也会引起问题。
最后,需要在script.js
文件之后加载angular.js
文件。否则,在解析script.js时没有定义angular。
修改强>
我更新了plunker:
http://plnkr.co/edit/54Fk0uP9jn8CzmDnNZNr?p=preview
我想我误解了这个问题。问题在于如何编写select
元素。似乎ng-click
元素上的option
没有以chrome格式触发。在ng-change
元素本身上使用select
,并在元素上使用ng-model
解决此问题。它还可以稍微清理html,并使用更多选项更容易扩展。