我有两个关于钛系列的问题:
这是我的控制器:
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 :(得分:0)
我认为你错过了一个近距离支撑。
但除此之外,你可以像这样设置宽度,不需要创建那两个变量(宽度和大小)
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;
}
}
});
答案 1 :(得分:0)
首先,您尝试使用ScrollView进行集合数据绑定,我不确定这是否可以开箱即用。
只需使用普通的javascript即可。如果要保留项目对象,可以将其放在单独的控制器中并传递适当的数据。从scrollview的主体中删除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());
}
}
}
});