我的应用程序中有两个选择列表,两个都是来自DB的动态值。根据在第一个选择列表中选择的值显示第二个选择列表中的值。因此,更改第一个选择列表的事件,第二个选择列表值应该动态更改而不刷新页面。
我的代码如下,
控制器:
$.picker.addEventListener('change',function(e){
languageid = e.row.title;
alert("language is : "+ languageid);
movie.fetch({query: "SELECT * FROM movies WHERE id = '"+languageid+"';"});
var column = Ti.UI.createPickerColumn();
movie.each(function(model){
var row = Ti.UI.createPickerRow({
title: model.get("movieName")
});
column.addRow(row);
});
$.picker1.columns = [column];
});
查看:
<Alloy>
<Collection src="UserLanguage"/>
<Collection src="movies"/>
<Window class="container">
<Picker id="picker"/>
<Picker id="picker1"/>
</Window>
</Alloy>
样式:
".container": {
backgroundColor:"black"
}
"#picker": {
width: '90%',
top: '25dp'
}
"#picker1": {
width: '90%',
top: '100dp'
}
模型
exports.definition = {
config : {
"columns": {
"id": "text",
"movieName": "text"
},
"adapter": {
"type": "sql",
"collection_name": "movies"
}
}
};
截图结果
选择鱼卵计数正确但文字不可见。为什么?
答案 0 :(得分:3)
好的,让我们从头开始,因为当前的解决方案太乱了......
查看:(确保您有模特/ Movies.js)
<Alloy>
<Collection src="UserLanguage"/>
<Collection src="Movies"/>
<Window class="container">
<Picker id="picker"/>
<Picker id="picker1"/>
</Window>
</Alloy>
控制器:(问题是@Coyote从名为movie
而不是movies
的表中选择数据。所以看起来应该是这样的:
var movies = Alloy.Collections.Movies;
$.picker.addEventListener("change", function(e) {
var column = Ti.UI.createPickerColumn();
movies.fetch({
query: {
statement: "SELECT * FROM movies WHERE id = ?;",
params: [e.row.title] // How can be `title` an id?
}
});
movies.each(function(model) {
var row = Ti.UI.createPickerRow({
title: model.get("movieName")
});
column.addRow(row);
});
$.picker1.columns = [column];
});
答案 1 :(得分:2)
只需使用传递给fetch函数的查询参数:
$.picker.addEventListener('change',function(e){
languageid = e.row.title;
//alert("language is : "+ languageid);
movie.fetch({query: "SELECT * FROM movie WHERE id = '"+languageid+"';"});
var column = Ti.UI.createPickerColumn();
movie.each(function(model){
var row = Ti.UI.createPickerRow({
title: model.get("movieName");
});
column.addRow(row);
});
$.picker1.columns = [column];
});