Я создаю список элементов, предлагаемых в панели поиска автозаполнения, стандартным образом:
Элементы перечислены в типе данных ObservableArray.
Я хотел бы постепенно заполнять элементы предложений, помещая их один за другим в ObservableArray с условием:
page.bindingContext.set("suggestionItems", new ObservableArray([]));
for (let i = 0; i < source.length; i++){
if ( conditionMet(source[i]) ){
page.bindingContext.suggestionItems.push(
new autocompleteModule.TokenModel(source[i])
);
}
}
console.log("Items for suggestion: " + page.bindingContext.suggestionItems);
Однако этот метод не работает.Никакие пункты никогда не перечислены под строкой поиска.Хотя console.log () показывает хорошо заполненный массив ObservableArray в bindingContext:
Items for suggestion: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Поэтому я использую обходной путь, хотя и не очень элегантный и не гибкий.Я заполняю временный массив в области действия функции, а затем я устанавливаю () offertionItems в bindingContext напрямую со всем этим временным массивом.
let tempItems = [];
for (let i = 0; i < source.length; i++){
if ( conditionMet(source[i]) ){
tempItems.push(
new autocompleteModule.TokenModel(source[i])
);
}
}
page.bindingContext.set("suggestionItems", new ObservableArray(tempItems));
console.log("Items for suggestion: " + page.bindingContext.suggestionItems);
Так что теперь, если я хочу нажать на элемент, мне нужнозаменить весь ObservableArray с нуля ...
Обратите внимание, что для временного решения вывод console.log () такой же.