有沒有什麼辦法來檢查一個值是否在角模板中的數組?我期待這樣的事情:檢查角模板中的數組值?
<div ng-class="{'myClass':1 in [1,2,5]}">Yay</div>
如果myClass應用,如果1是在數組中。
這可能嗎?
另外,Angularjs使用了什麼樣的模板引擎?我在哪裏可以找到它的文檔?每當我嘗試搜索(甚至是官方文檔)時,我似乎都會看到有關指令或數據綁定的文檔。
有沒有什麼辦法來檢查一個值是否在角模板中的數組?我期待這樣的事情:檢查角模板中的數組值?
<div ng-class="{'myClass':1 in [1,2,5]}">Yay</div>
如果myClass應用,如果1是在數組中。
這可能嗎?
另外,Angularjs使用了什麼樣的模板引擎?我在哪裏可以找到它的文檔?每當我嘗試搜索(甚至是官方文檔)時,我似乎都會看到有關指令或數據綁定的文檔。
您可以使用indexOf()
測試一個值是否在一個數組,然後用它你ngClass
裏面像這樣(有條件地添加「的NewClass」):
<div ng-class="{'newclass':([1,2,5].indexOf(2) > -1)}">Yay</div>
或者更可能你會想對你的範圍陣列測試:
<div ng-class="{'newclass':(tarray.indexOf(1) > -1)}">Yay</div>
假設,例如,你已經在你的控制器宣佈tarray
:
$scope.tarray=[1,2,5];
至於模板引擎,它內置於角。所以沒有什麼獨立的東西可以搜索。但是這裏是top level template docs,並且有一些很好的video tutorials here涵蓋了模板(例如第一個是數據綁定)以及更多。
試試這個:
ng-class="{'myClass': !!~[1,2,5].indexOf(1)}"
如果值不在數組你得到0,因此!! 你得到假
indexOf在物品不在數組中時返回-1 –
@Gruff Bunny〜[1,2,5] .indexOf(3)與您獲得的位操作0 – Whisher
Oops - 沒有看到沒有 - 我很抱歉 –
你可以創建一個過濾器來檢查這個。喜歡的東西:
app.filter('inArray', function() {
return function(array, value) {
return array.indexOf(value) !== -1;
};
});
然後你就可以在你的模板中使用這樣的:
<div ng-class="{'newclass': tarray | inArray : 1}">Yay</div>
的優勢是,它讓你的模板更易讀。
如果'array'是一個'Array'對象(它可能並不總是一個數組,尤其是在初始化時),那麼您可以添加驗證:'return Array.isArray(array)&& array.indexOf(value)!= = -1;'。 –
謝謝,正是我正在尋找 - 沒有意識到我可以在模板中使用多少JS。 – Anonymous
雖然 –