Мне нужно написать код, в котором я должен перенести некоторые элементы между двумя списками и скрыть ошибку, когда массив литералов объекта, который должен быть передан, не пуст.Я создал два контроллера (для управления двумя отдельными списками) и один сервис для работы с общими данными.Список был определен внутри службы вместе с некоторыми функциями для передачи элементов из одного списка в другой.Казалось, что размер массива никогда не менялся с 0, это логика, которую я пытаюсь использовать в ngIf.
Моя логика заключалась в том, чтобы проверить, является ли массив пустым, а затем вернуть значение true, если он был пустым, иустановите переменную пустой в контроллере.Тогда в ng-if я проверю ng-if = "b.empty" и подумал, что это будет работать, но это не так.Размер массива будет оставаться 0 на протяжении всего жизненного цикла моего кода.Я использовал ._isEmpty (list), angular ([], []) и наиболее очевидный, array.length, но проблема заключалась в том, что изначально они показывали 0, но затем размер массива никогда не менялся.Даже после заполнения целевого массива размер, по-видимому, оставался равным 0 для любой / всех вышеперечисленных функций / методов.
l1.$inject = ['listService']
function l1(listService){
var buying = this;
buying.items = listService.display();
buying.Add = function ($index){
listService.addItem($index);
}
}; //This is the controller for the source array.
.
.
.
bought.empty = listService.checkIfFull(); //Part of the second controller which assigns empty a boolean value
.
.
.
service.checkIfFull = function (){
if(blist.length == 0){
console.log(_.isEmpty(blist))
console.log(tblist)
return false;
}
else
{
console.log("not going here");
return true;
}
}; //The service checks if the array is empty
<div class="emptyMessage" ng-if="b.empty">Nothing bought</div>
Значение операторов console.log также, по-видимому, только выполняетсяв истинной части заявления if.Я нашел для этого решение, которое заключалось в простой проверке самого тега html, если длина локального списка (который я повторяю, по ng-repeat) была равна нулю, и это сработало.Но не могли бы вы объяснить, почему моя попытка неверна?Я новичок в AngularJs и JS в целом, поэтому, возможно, я не понял некоторые правила относительно js и, таким образом, написал неправильный код.Спасибо.
Редактировать: вот ссылка на кодовый блок-> https://codepen.io/meanmanmachineman/pen/RmmdjY