У меня есть список, который показывает запрос слов из db, оттуда я могу щелкнуть по одному слову, и он попадает в другой список, который я могу сохранить, чем. С этим я могу создавать разные списки слов. То, что я хочу сделать, - это дать словам другой цвет, если я уже подтолкнул их к новому списку.Сравнение двух массивов и использование ng-стиля для отметки равных записей в массивах
Для этого я использую функцию в своем контроллере для сравнения двух списков с угловыми и передними. Если wordFromQuery._id === wordOnNewList._id, я дал слова другого цвета фона с ng-style.
Вот мой код:
Посмотреть
ng-repeat="word in searchWords" ng-click="addWordToSet(word)" ng-class="isInside(word)" ng-style="{ background: choosenWords.value == 'exist' ? 'lightgreen' : 'white' }"
Я перебрать слов запроса (searchWords) и с addWordtoSet (слово) я подталкивать их к моему другому массиву (это работает отлично) , isInside (слово) будет выполнять угловое вычисление. Прежде чем сравнивать два массива, а стиль ng должен предоставлять разные стили в соответствии с if-выражением функции isInside.
Контроллер
$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
Что происходит, так это то, что одно слово в массиве поискового запроса получает зеленый цвет (и его набор от +1, поэтому, если слово в массиве 0 будет правильным, 1 получает зеленый цвет).
Я подозреваю, что я сделал все это неправильно с элементом ng-class, но я не нашел еще одной хорошей возможности получить слово._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-модулей? – d8ta
Я верю, что была ошибка, когда контроллер был установлен как часть частичного, это ионы назад ... приоритет используется для сортировки директив, прежде чем они будут скомпилированы checkout угловые документы ... – user3086298
Вложенные шаблоны, называемые partials – user3086298