привязка динамических данных Titanium ListView

sdk: 3.5.1

Я не знаком с listView механикой. Я пытаюсь понять, как применять значения данных JSON к связанным свойствам шаблона элемента.

Я начинаю с сопоставления данных

//example 
var data = ({data:json-data, index:'label'});

var _data = _.map(data, function(item, index) {
    return {
        properties: {
            categoryLabel: index,
            data: item

        }
    }
});

Затем я хочу привязать его к своему списку

$.activityDetailsList.sections[0].setItems(_data);

На мой взгляд у меня

<ListView defaultItemTemplate="activityDetailsListItemTemplate" id="activityDetailsList">
  <Templates>
    <ItemTemplate name="activityDetailsListItemTemplate">
      <Label bindId="categoryLabel" class="rowTitle" id="categoryLabel"/>
      <View bindId="rightSpacer" id="rightSpacer">
        <ImageView bindId="arrowImage" id="arrowImage"/>
      </View>
    </ItemTemplate>
  </Templates>
 <ListSection id="activityDetailsListSection">
    <ListItem template='activityDetailsListItemTemplate'/>
  </ListSection>
</ListView>

Когда я перебираю пять элементов, все, что я получаю, — это пустые строки с соответствующими стрелками.

введите здесь описание изображения

Вот мой вопрос: как мне отобразить текстовые значения categoryLabel? Должен ли я определять это в шаблоне? Эта часть мне не ясна. Я думал, что достаточно просто привязать данные к шаблону. Очевидно нет.


person Mike S.    schedule 27.01.2016    source источник


Ответы (1)


Что в итоге сработало для меня:

просмотреть xml

<Alloy>
    <Window class="container">
        <ListView defaultItemTemplate="dailyActivitiesTemplate" id="activityList" top="30">
            <Templates>
                <ItemTemplate name="dailyActivitiesTemplate">
                    <View id="dailyActivities">
                        <View class="row" id="fundRow">
                            <Label class="rowTitle" id="fund" text="Fund: "/>
                            <Label bindId="fund" class="rowValue" id="fund"/>
                        </View>
                        <View class="row" id="amountRow">
                            <Label class="rowTitle" id="amount" text="Amount: "/>
                            <Label bindId="amount" class="rowValue" id="amount"/>
                        </View>
                        <View class="row" id="unitsRow">
                            <Label class="rowTitle" id="units" text="Units: "/>
                            <Label bindId="units" class="rowValue" id="units"/>
                        </View>
                        <View class="row" id="sourceRow">
                            <Label class="rowTitle" id="source" text="Source: "/>
                            <Label bindId="source" class="rowValue" id="source"/>
                        </View>
                        <View class="row" id="unitValueRow">
                            <Label class="rowTitle" id="unitValue" text="Unit Value: "/>
                            <Label bindId="unitValue" class="rowValue" id="unitValue"/>
                        </View>
                    </View>
                </ItemTemplate>
            </Templates>
            <ListSection>
                <ListItem template="dailyActivitiesTemplate"/>
            </ListSection>
        </ListView>
    </Window>
</Alloy>

контроллер:

var items = [];

_.map(_.first(activities), function(element, key) {

    if (moment(new Date(key)).isValid()) {

        _.each(element, function(item, key) {
            items.push({
                fund: {
                    text: item.fund
                },
                amount: {
                    text: item.amount
                },
                units: {
                    text: item.units
                },
                source: {
                    text: item.source
                },
                unitValue: {
                    text: item.unitValue
                }
            });

        });
    }

});
$.activityList.sections[0].setItems(items);

Важным моментом для меня является то, что мне не нужен родитель properties:{}. Это смутило меня. Теперь, когда у меня были данные в представлении, мне просто нужно было стилизовать их с помощью файла TSS.

person Mike S.    schedule 01.02.2016