我工作的地方有一个我需要修改的angularjs项目,但我完全不能理解这段代码:
app.controller("complementsController", function($scope, $rootScope, $mdSidenav, $timeout, $localStorage, $window) {
$scope.storage = $localStorage;
$scope.arrayCubiert = $scope.storage.cocinaCubiert.split("-");
$scope.tipoCubiert = $scope.arrayCubiert[1];
$scope.return = function() {
$window.history.back()
};
$scope.configurations = [{
logo: "some-logo",
val: 1
}];
"CUE" != $scope.tipoCubiera && "CUF" != $scope.tipoCubiert && "CUS" != $scope.tipoCubiert || $scope.configurations.push({
logo: "fiss-logo",
val: 2
});
"CUE" == $scope.tipoCubiert && $scope.configurations.push({
logo: "grafett-essence",
val: 3
});
$scope.opcionTitle = "EhapeAL", $scope.opcionImg = [ ["EAL.png", "EhapeAL AL"] ];
$scope.opcionBtn = 1, $timeout(function() {
$mdSidenav("sidebar").toggle().then(function() {})
}, 500);
特别是我不明白的是:
" CUE" != $ scope.tipoCubierta&& " CUF" != $ scope.tipoCubierta&& " CUS" != $ scope.tipoCubierta || $ scope.configuraciones.push({ logo:" fisso-logo", val:2 }),
这是一种速记条件???如果是这样的话,就像传统的"方式。
答案 0 :(得分:1)
与AngularJS无关的东西只是javascript 如果你提出类似的东西:
4 != 1 && 4 != 2 && 4 != 3 || console.log("hello world")

它与
相同
if(4 != 1 && 4 != 2) {
if( !(4 != 3){ //console is only executed when the 3rd condition is FALSE because is an OR
console.log("hello world");
}
}
//remember that saying foo == 1 && foo == 2 || foo == 3 it's the same as foo == 1 && (foo == 2 || foo =3)

希望有所帮助
答案 1 :(得分:1)
来自MDN关于logical opereator:
短路评估
当逻辑表达式从左到右进行评估时,它们会被测试 可能的"短路"评估使用以下规则:
false&&任何短路都被评估为假。
true ||任何短路评估都是真的。
逻辑规则保证这些评估始终是正确的。请注意 以上表达式的任何部分都不会被评估,所以任何一方 这样做的效果不会生效。
所以"传统"以上代码的方式是:
if(!("CUE" != $scope.tipoCubierta && "CUF" != $scope.tipoCubierta && "CUS" != $scope.tipoCubierta)){
$scope.configuraciones.push({ logo: "fisso-logo", val: 2 })
}