【发布时间】:2016-12-24 14:14:22
【问题描述】:
我正在使用 RadListView 并拦截 onItemLoading 事件。
在该事件中,我可以引用 itemTemplate 中的各个视图元素吗?
我看到了 args.view._subViews - 但我想知道是否可以通过名称或其他方式找到元素。我认为 id 不起作用,因为每个项目都有相同的 id。
【问题讨论】:
我正在使用 RadListView 并拦截 onItemLoading 事件。
在该事件中,我可以引用 itemTemplate 中的各个视图元素吗?
我看到了 args.view._subViews - 但我想知道是否可以通过名称或其他方式找到元素。我认为 id 不起作用,因为每个项目都有相同的 id。
【问题讨论】:
你是正确的,通过 Id 只会返回第一个。但是,如果您有对 ListView 子组的引用;使用 id 可以将元素从组中取出。
现在,如果你使用我的NativeScript-Dom 插件,那就很简单了;你可以做:
var elements = RadListView.getElementsByClassName('someClass'); 或 RadListView.getElementsByTagName('Label'); 或更新的功能`
RadListView.runAgainstTagNames('Label', function(element) {
/* do something with this element */
});
并使用符合您的条件的元素数组。
还请注意,在 ListView 中并非所有元素都是预设的; ListViews 通常只需要填充 ListView + 1 的元素;所以即使列表视图中有 2,000 个项目;您可能只有 10 个实际的子 ListView 元素组。因此,当您执行 GetElementsByTagNames('Label') 时,您只会得到其中的 10 个......
【讨论】:
runAgainstTagNames('Label');,它将执行整个页面。 ;-) 现在到哪里得到它; tns plugin add nativescript-dom 会将其添加到您的应用中; repo/docs 位于github.com/NathanaelA/nativescript-dom,你总是可以在plugins.nativescript.rocks找到任何NS插件