ワークフローのバックボーン設定があります。ページにはいつでも複数のワークフロー/モデルが表示されます。ワークフローがまだ開始されていない場合(つまり、データベースにない場合)、新しいモデルとして表示されます。フェッチされたモデルをビューに渡すのに問題があります。見た目のコレクションではなく、属性のみを渡していますか?誰かアイデアはありますか?
データベースからすべてのワークフローをフェッチすると、ワークフローの進行状況のJSON配列が返されます。
[{
"ref_id": 41959,
"parent_ref_id": 35,
"fk_workflow_id": 2,
"stage": 1,
"status_max": 4,
"updated": "2012-05-14 17:30:46"
}, {
"ref_id": 41960,
"parent_ref_id": 35,
"fk_workflow_id": 3,
"stage": 3,
"status_max": 4,
"updated": "2012-05-14 12:30:48"
}]
ページが読み込まれると、すべてのワークフローが「新しいモデル」として作成されます。これは、ワークフローがまだ開始されているかどうかがわからないためです。フェッチが開始されたモデルを返したら、適切なモデルをビューに渡す必要があります。モデルを適切に渡す方法を理解するのに問題があります(つまり、属性を渡すことはできますが、その後、collection.create関数などにアクセスできないようです)
var self = this;
this.workflows = new Workflow.WorkflowCollection();
this.workflows.fetch({
data:{
ref_id: REF_ID
},
success: function(model, response) {
for(var i = 0, ln = model.models.length; i< ln;i++) {
self.switchWorkflow(model.models[i].get("fk_workflow_id"), new Workflow(model.models[i].attributes));
}
}
});
これは、バックボーンがセットアップする必要のあるモデルの数を知ることができる唯一の方法です(各顧客の各ワークフローを開始することを除いて-最大100万行)
setupWorkflowSpaces: function(model) {
for(var i =0; i<Workflow.FileWorkflows.length;i++) {
this.switchWorkflow(Workflow.FileWorkflows[i], false);
}
},
switchWorkflow: function(workflow_id, model) {
if(!model)
model = new Workflow;
switch(workflow_id) {
case 1:
this.applicationProcessView(model);
break;
case 2:
this.kitView(model);
break;
case 3:
this.posView(model);
break;
default:
alert('wut');
break;
}
},
kitView: function(model) {
console.log(model);
model.set("fk_workflow_id", 2);
if(this.kit) this.kit.close();
this.kit = new Workflow.PostageView({
model: model
});
},