如何使用Alloy(appcelerator)查询(where,inner join)?

use*_*851 3 appcelerator backbone.js titanium-alloy

我正在尝试:

Application Mobile with Alloy
Titanium SDK version: 2.1.3 (10/02/12 16:16 15997d0)
iPhone Device family: universal
iPhone SDK version: 6.0
iPhone simulated device: iphone
Detected compiler plugin: ti.alloy/1.0
Run Code Online (Sandbox Code Playgroud)

我创造了两个模型:

alloy generate model met sql met_id:int libelle:string famille_id:int
alloy generate model famille sql famille_id:int libelle:string
Run Code Online (Sandbox Code Playgroud)

并填写以下数据:

var mets = Alloy.createCollection('Met')
var met = Alloy.createModel("Met",{met_id:1,libelle:"Salade de Chèvre Chaud",famille_id:1});mets.add(met);met.save();
var met = Alloy.createModel("Met",{met_id:2,libelle:"Salade de Chèvre Chaud",famille_id:2});mets.add(met);met.save();
var met = Alloy.createModel("Met",{met_id:3,libelle:"Salade de Chèvre Chaud",famille_id:3});mets.add(met);met.save();
var met = Alloy.createModel("Met",{met_id:4,libelle:"Salade de Chèvre Chaud",famille_id:4});mets.add(met);met.save();
var met = Alloy.createModel("Met",{met_id:5,libelle:"Salade de Chèvre Chaud",famille_id:1});mets.add(met);met.save();
var met = Alloy.createModel("Met",{met_id:6,libelle:"Salade de Chèvre Chaud",famille_id:2});mets.add(met);met.save();
var met = Alloy.createModel("Met",{met_id:7,libelle:"Salade de Chèvre Chaud",famille_id:3});mets.add(met);met.save();
var met = Alloy.createModel("Met",{met_id:8,libelle:"Salade de Chèvre Chaud",famille_id:4});mets.add(met);met.save();
var met = Alloy.createModel("Met",{met_id:9,libelle:"Salade de Chèvre Chaud",famille_id:1});mets.add(met);met.save();
var familles = Alloy.createCollection('Famille')
var famille = Alloy.createModel("Met",{famille_id:1,libelle:"famille 1");familles.add(famille);famille.save();
var famille = Alloy.createModel("Met",{famille_id:2,libelle:"famille 2"});familles.add(famille);famille.save();
var famille = Alloy.createModel("Met",{famille_id:3,libelle:"famille 3"});familles.add(famille);famille.save();
var famille = Alloy.createModel("Met",{famille_id:4,libelle:"famille 4"});familles.add(famille);famille.save();
Run Code Online (Sandbox Code Playgroud)

现在,我想用famille_id = 1获取所有"met".

var mets = Alloy.createCollection('Met')
mets.where({famille_id:1}).
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是mets.length = 0.谁知道为什么?第二个是我怎么能做出inner join之间metfamille_id

有关信息,如果我这样做:

var mets = Alloy.createCollection('Met')
mets.fetch();
for(var i = 0;i< mets.length;i++)
{
    var args = {
        plat : mets.models[i].attributes.libelle,
        met_id : mets.models[i].attributes.met_id
    }
    var rowPlat = Alloy.createController('rowPlat', args).getView();
    data.push(rowPlat);
}
Run Code Online (Sandbox Code Playgroud)

我有所有数据tableView,它工作正常.

ste*_*ach 6

您的问题是您没有提取任何数据.所以where将不会返回任何记录.

首先初始化你的收藏:

var mets = Alloy.createCollection('Met')
mets.fetch();
Run Code Online (Sandbox Code Playgroud)

然后在需要时根据您的输入过滤数据.

mets.where({famille_id:1})
Run Code Online (Sandbox Code Playgroud)

由于我不使用Alloy,我没有测试过这个.但Alloy.createCollection只返回一个Backbone.Collection小号