繁体   English   中英

从XML Appcelerator iOS创建动态行数

[英]Create dynamic number of rows from xml appcelerator ios

我已经创建了如下的xml文件:

//cityState.xml

<Alloy>
<Window id="cityStateMgWin">
    <TableView  id="cityAndStatesTableView" >
        <TableViewRow  id="cityStatesRow" ></TableViewRow>
    </TableView>
</Window>

//在cityState.js中

我正在尝试使用以下代码动态创建状态行。

for (var i = 0; i < cityAndStatesListJSONData.length; i++) {
$.cityAndStatesTableView.appendRow(Alloy.createController('cityStatesRow', {title : cityAndStatesListJSONData[cityStates].cityState}).getView());
}

当我运行以下错误时,请帮助我

message = "Object is not a constructor (evaluating 'new   (require(\"alloy/controllers/\" + name))(args)')";
 [ERROR] :      stack = "createController\nonload";

将ui元素从xml文件获取到控制器并创建动态行数是否有任何错误。

提前致谢。

几个建议。

  1. 您在Alloy中有underscore可用
  2. 您不能基于ID创建控制器,它必须是实际的控制器。

因此,通过这种方式遍历数据更加容易:

_.each(cityAndStatesListJSONData, function(cityAndState){

});

接下来,为您的行创建一个控制器cityStatesRow 应该看起来像这样

该控制器的JS文件:

if ($.args.data.labelProp){
   $.myLabel.text = $.args.title;
}

您可以根据需要选择任意数量的项目,图像,标签等来执行此操作。

_.each循环中,您将要创建控制器并将数据传递给它:

 var controller = Alloy.createController('cityStatesRow', {title : cityAndState.cityState});

现在将其附加到您的TableView

$.cityAndStatesTableView.appendRow(controller.getView());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM