Как передать имя виджета функции в Tabris?

Могу ли я передать name виджета в function создавать вкладки?

Что-то вроде

  • let widgetName = new Tab({...

Зачем?

  • Мне нужно поместить много разных виджетов внутри каждого tab создано, то есть: .appendTo(tabCart)

Примечание: когда я создаю функцию createTextViews() Я назначаю уникальный

id: txvName +(index)

(array передается createTextView(), затем forEach петля)

и может обратиться к каждому TextView по id, который отлично работает.

Пример кода: (работает на / детская площадка)

const {Tab, TabFolder, TextView, ui} = require('tabris')

let tabFolder = new TabFolder({
  left: 0, top: 0, right: 0, bottom: 0
}).appendTo(ui.contentView)

createTab('tabCart', 'Cart')
createTab('tabPay', 'Pay')
createTab('tabStats', 'Stats')

function createTab (widgetName, title) {
// let widgetName = new Tab({  //fails, can't assign twice, wrong type anyways
  let tab = new Tab({
    title: title
  }).appendTo(tabFolder)

  new TextView({
    centerX: 0, centerY: 0,
    text: 'Content of Tab ' + title
  }).appendTo(tab)
}

1 ответ

Решение
  • Спасибо Cookie Guru. Ваше предложение return tab это решение, на которое я надеялся.

  • Вот небольшой пример того, как я буду использовать это в своем приложении:


const {Button, ImageView, Tab, TabFolder, TextView, ui} = require('tabris')

let tabFolder = new TabFolder({
  left: 0, top: 0, right: 0, bottom: 0
}).appendTo(ui.contentView)

let tabCart = createTab('Cart', 'text-color')
new Button({
  centerX: 0, top: 60,
  text: 'Change textColor / remove tabPay'
}).on('select', () => {
  tabFolder.find('.text-color').set('textColor', 'red')
  tabPay.visible = false
  tabItems.title = 'Items (1)'
}).appendTo(tabCart)

let tabItems = createTab('items', 'text-color')
new ImageView({
  centerX: 0, top: 0,
  image: 'https://raw.githubusercontent.com/eclipsesource/tabris-js/master/snippets/resources/target_200.png'
}).appendTo(tabItems)

let tabPay = createTab('Pay', 'text-color')

function createTab (title, tclass) {
  let tab = new Tab({
    title: title
  }).appendTo(tabFolder)

  new TextView({
    centerX: 0, centerY: 0,
    text: 'Content of Tab ' + title,
    class: tclass
  }).appendTo(tab)
  return tab
}
Другие вопросы по тегам