2016-09-09 36 views
2

我在哪裏工作,我們有一個angularjs項目,我需要修改,但我不能完全理解這些代碼:我有一些懷疑與代碼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({ 標誌: 「fisso-標誌」, VAL:2 }),

這是一種速記條件的???如果是這樣,那將是「傳統」的方式。

+1

這是迫切需要一些縮進,使之可讀。 – tadman

回答

1

從MDN約logical opereator

短路評價

由於邏輯表達式是從左向右計算的,他們正在測試 可能的「短路「使用以下規則進行評估:

false & &任何短路評估都是錯誤的。

true ||任何事情都會被短路評估爲真。

邏輯規則保證這些評估總是正確的。請注意,上述表達式的任何部分都不會被評估,因此這樣做的任何一方都不會生效。

因此,對於上面的代碼中的「傳統」的方式是:

if(!("CUE" != $scope.tipoCubierta && "CUF" != $scope.tipoCubierta && "CUS" != $scope.tipoCubierta)){ 
    $scope.configuraciones.push({ logo: "fisso-logo", val: 2 }) 
} 
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)

希望它有助於