Data binding Nativescript转发器数据绑定

Data binding Nativescript转发器数据绑定,data-binding,repeater,nativescript,Data Binding,Repeater,Nativescript,我想创建一个动态菜单列表,并在所选项目上应用类。 我有一个菜单项数组,menuItems,这是一个observearray 页面绑定包含两个条目: 菜单项 所选页面 想法很简单:当selectedPage参数等于页面名称时,应用不同的类来指示用户当前显示的页面 <Repeater items="{{menuItems}}" id="repeater"> <Repeater.itemTemplate> <Label text="{{name}}" c

我想创建一个动态菜单列表,并在所选项目上应用类。 我有一个菜单项数组,
menuItems
,这是一个
observearray

页面绑定包含两个条目:

  • 菜单项
  • 所选页面

想法很简单:当
selectedPage
参数等于页面名称时,应用不同的类来指示用户当前显示的页面

<Repeater items="{{menuItems}}" id="repeater">
  <Repeater.itemTemplate>
    <Label text="{{name}}" class="{{ $parents['Page'].selectedPage == name ? 'selected' : '' }}" tap="navigate" />
  </Repeater.itemTemplate>
</Repeater>
显示好的
菜单项
条目名称



显示好的
selectedPage
条目名称


但是这些代码示例不能一起工作。两者都只能独立工作


因此,我有点不知所措,是否使用基于
$parents
的选择器更改
中继器中的上下文?

我也遇到了这个问题,并在中找到了解决方案

注意:绑定表达式可以在没有显式命名的源属性(TextField text=”“)的情况下使用。在这种情况下,$value用作源属性。但是,如果要观察嵌套属性的更改(例如item.nestedProp),则这可能会导致问题$值表示bindingContext,当bindingContext的任何属性发生更改时,将计算表达式。由于nestedProp不是item.nestedProp中bindingContext的属性,所以不会附加propertyChange侦听器,对nestedProp的更改也不会填充到UI中。因此,为了消除这些问题,最好指定哪些属性应该用作源属性

这意味着,当您绑定一个直接在绑定上下文上设置的变量时,可以将表达式本身传递到花括号中:

    <Label text="{{name}}" class="{{ mySelectedPage == name ? 'selected' : '' }}" tap="navigate" />

…但如果要绑定嵌套在绑定上下文中设置的对象中的变量,则必须将该嵌套属性作为第一个参数传递到花括号中,并将表达式本身作为第二个参数传递:

<Label text="{{name}}" class="{{ $parents['Page'].selectedPage, $parents['Page'].selectedPage == name ? 'selected' : '' }}" tap="navigate" />

    <Label text="{{name}}" class="{{ mySelectedPage == name ? 'selected' : '' }}" tap="navigate" />
<Label text="{{name}}" class="{{ $parents['Page'].selectedPage, $parents['Page'].selectedPage == name ? 'selected' : '' }}" tap="navigate" />