2016-02-15 79 views
1

請給我建議以下兩種方法中的哪一種更清晰有用,用ng-show來顯示和隱藏文字。兩個變量和明確的責任或一個變量與鑄造?

代碼1:

控制器:

$scope.text = false; 

if (error) { 
    $scope.text = "Error message"; 
} else { 
    $scope.text = false; 
} 

檢視:

<div ng-show="!!text"> {{text}} </div> 

代碼2:

控制器:

$scope.flag = false; 
if (error) { 
    $scope.flag = true; 
    $scope.text = "Error message"; 
} else { 
    $scope.flag = false; 
} 

查看:

<div ng-show="flag">{{text}}</div> 

哪個代碼更簡單,更好的理解?

在代碼2 I可以省略else塊,所以,控制器將看起來像:

if (error) { 
    $scope.flag = true; 
    $scope.text = "Error message"; 
} 

== EDIT2 代碼是在反應的事件,所以我必須每個事件被調用時設置它們。

+5

**我的回答:** _CODE 2_8 – Tushar

+1

在碼2,這是更好,你可以刪除其他部分。 – Jai

+1

不應該在你的第一個版本中分配文本= false?否則,視圖將嘗試顯示布爾值。爲什麼不使用空字符串(這是虛假的)來表示錯誤? – nnnnnn

回答

1

混合類型的變量JavaScript是不好的做法。可能有極端的情況,混合類型可以,但這不是一個極端的例子。如果你正在尋找一種方式來簡化代碼,使用ternary operator

$scope.text = error ? 'Error message' : ''; 
0

請使用:當出現錯誤時返回「錯誤消息」

$scope.text = true; 
if (error) { 
    $scope.text = "Error message"; 
} 

這裏否則其真正

+0

'!! false'會是什麼結果呢?並且'!!'產生布爾值,則鑄造不好,除非該值不是布爾值。 – Jai

+0

'false'表示沒有錯誤,因此它將返回true。 – javidrathod

+0

頁面加載後,ng-show必須隱藏,所以文本必須爲false。 – cyan