2016-03-31 56 views
1

我有一個對象,看起來像這樣提高「檢查是否真正的」功能

$scope.object = { 
    Title: 'A title', 
    Status: 'Open', 
    Responsible: 'John Doe', 
    Author: 'Jane Doe', 
    Description: 'lorem ipsum dolor sit' 
} 

現在我想看看如果當前用戶有權限編輯這個項目,爲用戶能夠編輯,該項目具有

  • 存在(不爲空,undefiend等)
  • 負責等於$scope.currentUser
  • 狀態等於 '打開'

,如果這一切都是真的,我們的函數應該返回true,我做它像這樣

$scope.isTrue = function(){ 

    if($scope.object && $scope.object.Status == 'Open' && $scope.object.Responsible == $scope.currentUser){ 
    return true; 
    }else { return false; } 

} 

相當直接的,但有沒有更好的方式做這幾樣的檢查?

+4

你不必返回true/false,你可以直接返回if語句中的所有內容,這本身就是true或者false。所以:'返回$ scope.object && $ scope.object.Status =='打開'&& $ scope.object.Responsible == $ scope.currentUser' –

+0

@MartijnWelker得到了很多更清潔,謝謝! – klskl

回答

2

if語句中的條件已經爲true或false,您可以返回該條件。

return ($scope.object && $scope.object.Status == 'Open' && $scope.object.Responsible == $scope.currentUser); 
2
  1. 結果轉換爲布爾(因此,如果$scope.objectundefined結果是false而不是undefined
  2. Making comparisons using ===
  3. 僅定義功能,並將其分配給範圍(個人喜好)

$scope.isTrue = isTrue; 

function isTrue() { 
    return Boolean($scope.object && $scope.object.Status === 'Open' && $scope.object.Responsible === $scope.currentUser); 
}