我正在使用NativeScript <ListView>
,我正试图访问每个元素的<ListView.itemTemplate>
中的各个元素。举一个具体的例子,给定此代码段,我如何访问每个<GridLayout>
?
<ListView>
<ListView.itemTemplate>
<GridLayout>...</GridLayout>
</ListView.itemTemplate>
</ListView>
我知道我可以为每个loaded
添加一个<GridLayout>
事件 - 即。 <GridLayout loaded="myEventHandler">
- 但是,对于我的用例,我需要在发生无关事件后更改<GridLayout>
上的属性。
理论上我可以使用loaded
事件在<GridLayout>
中构建所有<ListView.itemTemplate>
的数组,然后使用该数组执行操作,但这看起来很糟糕。似乎必须有更好的方法。有什么想法吗?
答案 0 :(得分:3)
操作列表视图项的可视化树似乎不是最强大的方法。请考虑以下情形:
我使用绑定实现这一点,如果事情变得毛茸茸,那么一个合适的视图模型可以使绑定变得简单。
答案 1 :(得分:1)
您可以使用nativescript-dom插件。 getElementsByClassName实际上有遍历ListView子节点的代码。不幸的是,在我发现问题并将错误报告放入NS Common Components repo之后 - 我完全忘记对nativescript-dom插件中的getElementsByTagName和getElementById函数进行相同的更改。
因此,如果您指定了类名,那么使用getElementsByClassName应该可以立即使用。除此以外;我可能会在本周晚些时候对该库进行更新,这将使listview子代码遍历其中两种方法。
更新:我发布了一个新版本的nativescript-dom,它允许所有三个getElement *在ListView子级上运行。
答案 2 :(得分:0)
我认为您可以使用id =&#34; gridView {{$ index}}&#34;等动态地给每个gridview和id。然后使用page.getViewById(&#39; gridView1&#39;)为例。目前无法对其进行测试,但我认为这样可行。