我有一個列表,顯示從一個分貝的單詞查詢,從那裏我可以點擊一個單詞,它被推到另一個列表,我可以保存比。有了這個,我可以創建不同的詞彙表。我想要做的是給這些單詞另一種顏色,如果我已經把它們推到我的新名單上。比較兩個數組,並使用ng樣式在數組中標記相同的條目
爲此,我使用我的控制器中的函數來比較兩個列表與angular.foreach。如果wordFromQuery._id === wordOnNewList._id我給了單詞另一個背景顏色與ng樣式。
這裏是我的代碼:
查看
ng-repeat="word in searchWords" ng-click="addWordToSet(word)" ng-class="isInside(word)" ng-style="{ background: choosenWords.value == 'exist' ? 'lightgreen' : 'white' }"
我遍歷詞的查詢(searchWords),並與addWordtoSet(字)我把它們推到我的其他陣列(這偉大工程) 。根據isInside函數的if語句,isInside(word)將執行angular.foreach來比較兩個數組,並且ng樣式應該提供不同的樣式。
控制器
$scope.isInside = function (word) {
angular.forEach($scope.currentWordlist, function (item) {
if (item._id === word._id) {
$scope.choosenWords = {value: 'exist'};
} else {
$scope.choosenWords = {value: 'notOnList'};
}
});
};
的angular.forEach比較從兩個陣列詞語的currentWordList是我用addWordToSet推送的數組
會發生什麼情況是,searchword數組上的一個單詞獲取綠色(以及+1的集合,因此如果arraypos。0中的單詞恰好是arraypos 。1獲得綠色)。
我懷疑我用ng-class元素做了所有的錯誤,但我沒有找到另一個很好的機會來獲得word._id的另一種方式。我在這裏做了明顯錯誤的事嗎?
我會感激提示或提示。謝謝!
UPDATE
它的工作原理與addWordToSet功能相當精緻:
$scope.addWordToSet = function (word) {
var exists = false;
angular.forEach($scope.currentWordlist, function (item) {
if (item._id === word._id) {
exists = true;
}
});
if (exists === false) {
$scope.currentWordlist.push(word);
}
};
我唯一需要的,我認爲是不這樣做的點擊,但沒有立即點擊任何東西。是my ng-class="isInside(word)"
的正確選擇嗎?
如果我使用choosenWords沒有對象我得到TypeErrors值沒有設置。你是什麼意思bei「通過部分初始化」,以及如何檢查ng-modules的優先順序? – d8ta
我相信當一個控制器被設置爲partial的一部分時,會出現一個bug,那就是離子以前...優先級用於在編譯指令之前對它們進行排序檢出角度文檔... – user3086298
嵌套模板稱爲偏好 – user3086298