要在视图模型(letras
示例中的数组)中进行更改,反映在 UI 中,您需要使用Native Script 的数据绑定。
下面是一个示例,鉴于您帖子中的 XML 视图,它将:
- 需要 2 个模块,observable(用于可观察对象)和 observable-array(用于数组)。
- 创建一个视图模型,它是保存数据的对象
- 将视图模型绑定到页面的绑定上下文。
- 每隔 1 秒,将一个新项目添加到视图模型(这将反映到 UI)。
我将页面的绑定上下文设置为视图模型。无需像 calebeaires 在他的示例中那样在 Repeater 元素上设置绑定上下文,因为 Repeater 将查看页面的绑定上下文。
但是,如果您愿意,您可以使用例如 2 个不同的绑定上下文,1 个用于页面,一个用于 Repeater 元素。换个就行
page.bindingContext = viewModel;
为了
page.getViewById('rep').bindingContext = viewModel;
完整代码:
var observableModule = require("data/observable");
var observableArrayModule = require("data/observable-array");
var viewModel = new observableModule.Observable({
letras: new observableArrayModule.ObservableArray([
{ l: 'First' },
{ l: 'Second' },
{ l: 'Third' },
])
});
function pageLoaded(args) {
var page = args.object;
page.bindingContext = viewModel;
//page.getViewById('rep').bindingContext = viewModel;
// Add a new item every 1 second.
setInterval(function() {
viewModel.letras.push({
l: 'New item'
});
}, 1000);
}
exports.pageLoaded = pageLoaded;