与钛合金的条件有关的问题

时间:2014-09-27 14:21:22

标签: backbone.js titanium titanium-mobile fetch titanium-alloy

我的应用程序中有两个选择列表,两个都是来自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"
        }
    }
};

截图结果

enter image description here

选择鱼卵计数正确但文字不可见。为什么?

2 个答案:

答案 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];
});