需要一个视图并添加一个变量(Appcelerator Alloy)

Require a view and add with a variable (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. 我将不得不使用所有文本字段项目将其发送到服务器,我如何设置 ID 但不幸的是我不知道如何在 appcelerator 上执行此操作。

变化:

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

收件人:

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

关于上面的答案,您是否包括原始代码块中的 .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());
});

或者如果你想坚持 "pure" Alloy 方式,那么保留 addNewDay 函数并添加一个 onClick="addNewDay" 按钮中的处理程序 XML.

最重要的是,请记住,您需要包含视图 ContainerDays 才能拥有 horizo​​ntal 的布局,否则您添加的视图将简单地放置一个接一个。