在Tabview中使用同一视图以及可观察到的问题

时间:2018-11-16 21:34:17

标签: nativescript

好吧,我有一个tabview,其中包含一些页面,第一页和第二页从Web上获取数据并以gridview的形式显示。由于两个页面的UI完全相同,因此我只想在其各自的.js /.ts文件中使用一个.xml文件。并使用Tabview中的框架在框架组件中显示某些条件的同一页面,例如

<Frame id="firstFrame" defaultPage="home/home-page" isPage='1' />

,然后在我各自的.js页面中使用

function pageLoaded(args) {
page = args.object;
condition = page.frame.isPage
viewModel = new Observable();
viewModel.set("items", '');
page.bindingContext = viewModel;};

我将“条件”存储在全局范围变量中。并在需要条件渲染的任何地方使用它。我还将视图模型存储在全局范围内。

它很精细...有点...您会看到,这两个页面被设置为显示不同的数据。但是出于圆顶的原因,第一页显示空白页[无数据],第二页正常工作。.

更奇怪的是,当我调用一个函数来更新第1页中的数据时,它会在第2页中对其进行更新,如果我重新启动应用程序,并在第2页中调用相同的功能,则第一页仍为空白(记住它们是同一页),有时会更新第一页。

是否两个页面都使用相同的Observable(项目)? ,如果是这样,我应该如何将Observable绑定到它们各自的页面?

哦,我还应该提到我使用“ exports.functioname =函数名”来调用函数。可能是这样吗?我看到合适的方法是将其绑定到“页面视图模型”文件中。可以吗?

1 个答案:

答案 0 :(得分:0)

看看您的代码,您所面对的是完全可以预期的。名为condition的变量并不特定于页面实例,因此它仅保留分配给它的最后一个值。

在加载第2页时,condition变量将被新值覆盖,并且再也不会更新。