0

У меня есть два вопроса о коллекциях титана:Titanium коллекции дисплей

Это мой контроллер:

var products = Alloy.Collections.products; 
products.fetch({ 
    success:function(_m,_r){ 
     var size = Alloy.Globals.half, 
     width = size; 
     for(var i = 1; i<=_resultats.length; i++){ 
      width = i%2 == 0 ? size : size-1; 
      backgroundColor = i%4 == 2 || i%4 == 3 ? Alloy.CFG.colors.lightgrey : "white"; 
      $.item.width = width; 
    } 

}); 

Это мой Вид:

<ScrollView dataCollection="products" dataTransform="parse_liste" layout='vertical' id="products"> 
    <View id='item'> 
     <Label text='{itemName}' /> 
     <ImageView image='images/star.png' id='rating' /> 
     <ImageView image='images/star.png' id='rating' /> 
     <ImageView image='images/star.png' id='rating' /> 
     <ImageView image='images/star.png' id='rating' /> 
    </View> 
</ScrollView> 

Все детали отображается ну, но у меня есть следующая ошибка:

[ERROR] : Script Error { 
[ERROR] :  column = 25; 
[ERROR] :  line = 269; 
[ERROR] :  message = "undefined is not an object (evaluating '$.item.width = width')"; 
[ERROR] :  stack = "success\nsuccess\n\nonLoad\nonload"; 
[ERROR] : } 

Во-вторых, как прокрутить изображения рейтингов от номиналов товаров?, Могу ли я сделать своего рода петлю внутри ярлыков?

Благодарим за помощь.

ответ

0

Я думаю, что вам не хватает тесной скобки.

Но кроме этого, можно установить ширину, как это, нет необходимости создавать эти 2 переменные (ширину & размера)

var products = Alloy.Collections.products; 
products.fetch({ 
    success:function(_m,_r) { 
     for(var i = 1; i<=_resultats.length; i++) { 
      backgroundColor = i%4 == 2 || i%4 == 3 ? Alloy.CFG.colors.lightgrey : "white"; 
      $.item.width = !parseInt(i%2) ? Alloy.Globals.half : Alloy.Globals.half-1; 
     } 
    } 
}); 
+0

Спасибо за ответ, но почему титан говорит, что $ .item не является объектом? [ERROR]: message = "undefined не является объектом (оценка '$ .item.width = width')"; – user44321

0

Сначала вы пытаетесь сделать данные по сбору связывания с ScrollView и Я не уверен, что это возможно из коробки.

Просто сделайте это в простом javascript. Если вы хотите сохранить объект объекта, вы можете поместить его в отдельный контроллер и передать соответствующие данные. Удалите xml из тела прокрутки.

var products = Alloy.Collections.products; 
products.fetch({ 
    success:function(_m,_r) { 
      var models = _m.models; 
      models.forEach(function(model){ 
       // In the for loop create an item controller and pass model data 
       var modelData = model.toJSON(); 
       Ti.API.info(JSON.stringify(modelData)); 
       var item = Alloy.createController('item', modelData) //pass here data for each model 
       $.products.add(item.getView()); 
      } 
     } 
    } 
}); 
+0

Привет, спасибо, но что такое modelData? – user44321

+0

Пожалуйста, уточните обновленный код – hini

+0

Здравствуйте, спасибо, если я понимаю, что мне нужно создать представление элемента и файл контроллера? и xml из тела выше, я должен поставить на элемент? – user44321