javascript - navigator.language 在 app.js 中无法正确识别

标签 javascript angularjs angularjs-scope operators

这是我的 Controller

app.controller('languagesCtrl', function($scope) {
  var lang = window.navigator.language || window.navigator.userLanguage;
  if (lang === 'it' || 'it-it' || 'it-IT') {
    $scope.showcase = 'Vetrina';
    $scope.products = 'Prodotti';
    $scope.cta = 'Nuova collezione strumenti';
  } else {
    $scope.showcase = 'Showcase';
    $scope.products = 'Products';
    $scope.cta = 'Check out new products!';
  }
});

即使我确定我的 navigator.language 不是“it-IT”(选中 here ),我的基于 Angular 网站也不会使用 else 括号内的内容。

最佳答案

您的表达式将始终为真,就像您使用 || 运算符的方式一样。

当表达式求值时

第 1 部分 (lang === 'it') 它可能是 truefalse,假设它是 false。

然后表达式变成像 (false || 'it-it' || 'it-IT') 它将总是返回去返回下一个表达式值,在这里它将是 it -it 在这种情况下,所以不管怎样,如果条件得到满足。

将其更改为以下。

if (lang === 'it' || lang === 'it-it' || lang === 'it-IT')

或事件简化。

if (['it','it-it','it-IT'].indexOf(lang) > -1)

关于javascript - navigator.language 在 app.js 中无法正确识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35349046/

相关文章:

javascript - 调用 jQuery AJAX 中包含的方法,该方法包含在同一类的方法中

javascript - 添加一个事件监听器来掷骰子 javascript

javascript - 如何: correctly chain AngularJS async calls (AngularJs 1. 7.5)

javascript - Angularjs templateUrl 与模板范围问题

javascript - AngularJS - 将属性传递给指令的问题 - 为每个属性接收未定义的值

angularjs - 如何知道在Angular JS中选择了哪个元素

javascript - 使用效果及观看状态

javascript - 喜欢/不喜欢 AngularJs 中的功能

angularjs - 通过 Git 将简单 SPA 部署到 Azure

javascript - Angularjs - 浏览器后退按钮不起作用