有可能在angularjs的typeof使用使用的instanceof?AngularJs表達
我有一個ngrepeat該循環槽我的數據,應檢查數據字符串或對象。
<tr ng-repeat="text in data">
<td>{{angular.isObject(text) && 'IsObject'||text}}</td>
</tr>
有可能在angularjs的typeof使用使用的instanceof?AngularJs表達
我有一個ngrepeat該循環槽我的數據,應檢查數據字符串或對象。
<tr ng-repeat="text in data">
<td>{{angular.isObject(text) && 'IsObject'||text}}</td>
</tr>
聽起來像是一個好地方,使用過濾器:
<tr ng-repeat="text in data">
<td>{{text|displayText}}</td>
</tr>
angular.module('myApp').filter('displayText', function() {
return function(text) {
return angular.isObject(text) ? 'IsObject' : text;
};
});
請不在這種情況下使用的過濾器,它顯然是在你的控制器功能的地方:
<tr ng-repeat="text in data">
<td>{{isThisAnObject(text)}}</td>
</tr>
而在你的控制器中:
$scope.isThisAnObject = function(input) {
return angular.isObject(input) ? 'IsObject' : input;
};
它不僅代碼少,而且在許多其他地方也有更好的效果。過濾器是爲了一個非常特定的目的。不是這個!
你能解釋爲什麼在這種情況下,功能比過濾器更好嗎?過濾器的這種「非常具體的目的」是什麼,這使得它們成爲糟糕的選擇? –
是啊,請給我一個更好的解釋@TomBull – Zorgatone
顧名思義,過濾器就是爲過濾而設計的。具體來說,過濾數組 - 即限制例如中繼器中顯示的項目。這是一種(可能無意識的)副作用,即語法也適用於單個項目,如接受的答案中所述。儘管在最簡單的情況下,所顯示的語法工作正常 - 它很快就會變得混亂。例如,當你想編寫多個這些操作時會發生什麼?或以其他方式處理操作結果?或者在其他情況下使用該操作? –
實際上,這是一個非常糟糕的地方使用過濾器。如果您繼續以類似的方式在其他地方使用過濾器,這不是過濾器的目標,並且可能會導致一些嚴重不良的代碼。更好的方法是使用函數。 –
@TomBull爲什麼在這種情況下使用過濾器不好? – Zorgatone
請參閱我的答案上的評論... –