如何访问中继器内的外部元素?
How to access outer element inside Repeater?
Javascript
var pageData = new Observable({
appointmentsList: appointmentsList,
user_role: ''
});
exports.onLoaded = function (args) {
page = args.object;
page.bindingContext = pageData;
pageData.set('user_role', appSettings.getString('role'));
XML
<Repeater items="{{appointmentsList.booking_dates.bookings}}">
<Repeater.itemsLayout>
<StackLayout class="appointment-rows" />
</Repeater.itemsLayout>
<Repeater.itemTemplate>
<StackLayout>
<WrapLayout visibility="{{ user_role === 'agency' ? 'visible' : 'collapse' }}">
<Label text="{{user_name}}" class="row-client-name row-client-name-new" />
</WrapLayout>
</StackLayout>
</Repeater.itemTemplate>
</Repeater>
在上面的代码片段中,问题是我无法访问 Repeater
中的 user_role
。
谁能帮我如何访问 Repeater
中的外部元素?
谢谢。
基于此https://docs.nativescript.org/core-concepts/data-binding#example-4-creating-listview-child-items-based-on-the-itemtemplate,您可以尝试这样的操作:
<WrapLayout visibility="{{$parents['Repeater'].user_role,$parents['Repeater'].user_role === 'agency' ? 'visibile' : 'collapse' }}">
或者这样
<WrapLayout visibility="{{$parents['Page'].user_role,$parents['Page'].user_role === 'agency' ? 'visibile' : 'collapse' }}">
您需要使用 $parent
或 $parents[]
属性。
我相信:
<WrapLayout visibility="{{ $parent.user_role, $parent.user_role === 'agency' ? 'visible' : 'collapse' }}">
应该可以。但是,由于这是在中继器中,我不认为它对父绑定有什么奇怪的;但如果这不起作用——你可以简单地这样做:
<WrapLayout visibility="{{ $parents['Page'].user_role, $parents['Page'].user_role === 'agency' ? 'visible' : 'collapse' }}">
有关此功能的 NativeScript 文档:http://docs.nativescript.org/core-concepts/data-binding#binding-to-a-parent-binding-context
Javascript
var pageData = new Observable({
appointmentsList: appointmentsList,
user_role: ''
});
exports.onLoaded = function (args) {
page = args.object;
page.bindingContext = pageData;
pageData.set('user_role', appSettings.getString('role'));
XML
<Repeater items="{{appointmentsList.booking_dates.bookings}}">
<Repeater.itemsLayout>
<StackLayout class="appointment-rows" />
</Repeater.itemsLayout>
<Repeater.itemTemplate>
<StackLayout>
<WrapLayout visibility="{{ user_role === 'agency' ? 'visible' : 'collapse' }}">
<Label text="{{user_name}}" class="row-client-name row-client-name-new" />
</WrapLayout>
</StackLayout>
</Repeater.itemTemplate>
</Repeater>
在上面的代码片段中,问题是我无法访问 Repeater
中的 user_role
。
谁能帮我如何访问 Repeater
中的外部元素?
谢谢。
基于此https://docs.nativescript.org/core-concepts/data-binding#example-4-creating-listview-child-items-based-on-the-itemtemplate,您可以尝试这样的操作:
<WrapLayout visibility="{{$parents['Repeater'].user_role,$parents['Repeater'].user_role === 'agency' ? 'visibile' : 'collapse' }}">
或者这样
<WrapLayout visibility="{{$parents['Page'].user_role,$parents['Page'].user_role === 'agency' ? 'visibile' : 'collapse' }}">
您需要使用 $parent
或 $parents[]
属性。
我相信:
<WrapLayout visibility="{{ $parent.user_role, $parent.user_role === 'agency' ? 'visible' : 'collapse' }}">
应该可以。但是,由于这是在中继器中,我不认为它对父绑定有什么奇怪的;但如果这不起作用——你可以简单地这样做:
<WrapLayout visibility="{{ $parents['Page'].user_role, $parents['Page'].user_role === 'agency' ? 'visible' : 'collapse' }}">
有关此功能的 NativeScript 文档:http://docs.nativescript.org/core-concepts/data-binding#binding-to-a-parent-binding-context