ObservableArray.push()不会通知视图

时间:2018-12-06 15:19:59

标签: javascript autocomplete nativescript

我以这种标准方式在自动完成搜索栏下创建要建议的项目列表:

Screenshot of an autocomplete component for nativescript-ui 这些项目以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()在bindingContext中显示了一个填充良好的ObservableArray:

Items for suggestion: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

因此,尽管优雅程度不高且不灵活,但我正在使用工作台。我在函数作用域中填充了一个临时数组,然后直接使用整个临时数组在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()输出是相同的。

0 个答案:

没有答案