2016-07-18 2 views
0

Я создал файл XML, как показано ниже:Создание динамических количество строк из XML Appcelerator КСН

//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"; 

есть какая-либо ошибка, чтобы получить пользовательский интерфейс элемент из XML-файла в контроллер и создать динамическое число строк.

Заранее спасибо.

+0

что делает ваш cityStatesRow контроллер выглядит? –

ответ

1

Пара предложений.

  1. Вы underscore доступны в сплаве
  2. Вы не можете создать контроллер на основе кода, он должен быть фактическим контроллер.

Итак ... перекручивание через данные проще так:

_.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());