Требовать представление и добавить с переменной (Appcelerator Alloy)

Я не знаю, правильно ли я делаю это или использую какие-либо хорошие практики, но я пытаюсь требовать и добавлять взгляды на мое мнение.

но здесь у меня есть контейнер представления в моем index.xml

<View id="containerDays" layout="vertical" height="Titanium.UI.SIZE">
    <Require id="requiredDay" src="NewDay"/>
</View>
<Label id="buttonAddDay"  class="button" >Adicionar outro dia</Label>

также на index.js у меня есть:

$.buttonAddDay.addEventListener("click", addNewDay);
function addNewDay () {
  var novoDia  = $.getView("NewDay");
  $.containerDays.add(novoDia);
}

Также у меня есть представление здесь в другой папке:

/app/views/NewDay.xml

и внутри этого представления простой ввод

<Alloy>
  <View class="containerNewDay" layout="vertical" height="Titanium.UI.SIZE">
    <TextField id="Day" >write a new day</TextField>
  </View>
</Alloy>

так что все подводит итог,

  1. Я пытаюсь добавить свой $.containerNewDay в свой $.containerDay, но у меня не получается с getView() или.open()

  2. Мне придется использовать все элементы текстового поля, чтобы отправить его на сервер, как я могу установить идентификаторы, но, к сожалению, я не представляю, как это сделать на appcelerator.

2 ответа

Решение

Ответ выше, вы включаете метод.add из вашего исходного блока кода? так и должно быть:

$.buttonAddDay.addEventListener("click", addNewDay);

function addNewDay () {
  var novoDia  = Alloy.createController("NewDay").getView();
  $.containerDays.add(novoDia);
}

или лучше было бы:

function addNewDay () {
  $.containerDays.add(Alloy.createController("NewDay").getView());
}

поскольку это не оставляет указатель открытым для представления.

если вы хотите сделать его еще чище:

$.buttonAddDay.addEventListener("click",  function addNewDay () {
  $.containerDays.add(Alloy.createController("NewDay").getView());
});

или если вы хотите придерживаться "чистого" способа Alloy, то оставьте функцию addNewDay на месте и просто добавьте обработчик onClick="addNewDay" в кнопку XML.

Важно помнить, что вам нужно, чтобы ваш содержащий вид ContainerDays имел горизонтальную компоновку, или ваши добавленные виды будут просто лежать друг на друге.

Изменить:

$.buttonAddDay.addEventListener("click", addNewDay);
    function addNewDay () {
      var novoDia  = $.getView("NewDay");
    }

Для того, чтобы:

$.buttonAddDay.addEventListener("click", addNewDay);
function addNewDay () {
  var novoDia  = Alloy.createController("NewDay").getView();
}
Другие вопросы по тегам