Alloy の 1.8.3 へのアップグレードに関連する 2 つの問題が見つかりました。どちらも、変換とデータ バインディングに関して報告された別のバグの一部であると思います ( https://jira.appcelerator.org/browse/ALOY-1477 )。
私がやっていることが原因である場合に備えて、バグとして報告したくありませんでした??
最初のもの、私はもともとリストの変換で Alloy_id を参照していましたが、それを開始すると、alloy_id が見つからないというエラーが発生し始めました。上のバグ?
xml コード (一部)
<TableViewRow id="categoriesRow" UCATID="{UCATID}"
ParentID="{ParentID}" CategoryID="{CategoryID}" catName= {catName}"
model="$model" hasDetail="{hasDetail}">
<!-- TableViewRow id="categoriesRow" UCATID="{UCATID}"
ParentID="{ParentID}" CategoryID="{CategoryID}" catName="{catName}"
model="{alloy_id}" hasDetail="{hasChildren}"-->
<Label id="rowTitle">{CategoryName}</Label>
</TableViewRow>
2 つ目は、hasDetail を true または false (ブール値) に設定して、表の行に詳細を表示することです。これは、これまでのすべてのバージョンで小さなアイコンを表示することで iOS アプリで機能しますが、アップグレード前は、参照をブール値として検証することはできましたが、今度は文字列として参照する必要があります。これは正しくありませんか??
controller.js コード
function transformFunction(model) {
var transform = model.toJSON();
transform.catName = transform.CategoryName;
transform.hasDetail = transform.hasChildren == "0" ? false : true;
return transform;
}
$.winProdCats.addEventListener('click', function(e) {
Ti.API.info('e.row.hasDetail: ' + e.row.hasDetail );
var iHaveBoolean = e.row.hasDetail;
Ti.API.info('iHaveBoolean: ' + iHaveBoolean );
//if(e.row.hasDetail){ //this don't work as a boolean anymore only as a string
if(iHaveBoolean == "true"){
parentID = e.row.CategoryID;
getData();
filterFunction(library);
updateUI();
} else {
Ti.App.fireEvent('app:products:category:selected', {
UCATID : e.row.UCATID,
catName : e.row.catName,
ParentID : e.row.ParentID,
CategoryID : e.row.CategoryID
});
Alloy.Globals.navGroup.closeWindow($.winProdCats);
}
});