主干 - 传递从获取返回的正确模型
Backbone - Passing the right model returned from fetch
我有一个工作流的主干设置。在任何给定时间,页面上都可以看到多个工作流/模型。如果工作流尚未启动(即不在数据库中(,则显示为"新建模型"。将提取的模型传递到视图时遇到问题。我只是传递属性而不是看起来的集合?有人有什么想法吗?
当我从数据库中获取所有工作流时,它会返回工作流进度的 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
});
},
尝试在主干集合中定义 model
属性:
var Workflow.WorkflowCollection = Backbone.Collection.extend({
model: Workflow
});
如果已定义,则从服务器返回的原始属性将转换为Workflow
模型。
然后,您不必循环访问通过 fetch
中的 success
回调返回的集合。所有添加的模型都将在您的集合中,您可以使用 .create()
方法继续添加更多模型。
提取后,您可以使用 WorflowCollection.each
循环访问更新的集合。在循环中,您可以运行 switch 语句以将每个模型分配给适当的视图。
我希望这有所帮助。
相关文章:
- Angular,函数在(模型)工厂中返回值
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- Aurelia绑定-点击按钮返回查看模型
- 续集返回未定义的模型自定义方法
- “渲染骨干模型视图”返回未定义的结果
- Node.js应用程序中从模型层异步返回数据
- Ember.js返回相同的模型
- 保存模型返回错误
- Ember.js:路由返回多个模型,包括一个promise,给出错误
- 在控制器中将 ng 模型值返回为空的指令
- 在视图模型中使用 MVC 视图返回 JsonResult 数据
- 挖空映射对象未由杜兰达尔视图模型返回
- 在我的情况下,ng 模型返回未定义
- Knockout视图模型返回函数(如何?)
- 从AngularJS$scope ng模型返回对象
- 基于User的客户模型返回基于userId而不是customerId的FK属性
- 需要余烬模型返回数组承诺而不是对象
- 如何在 AngularJS 中将数据异步从模型返回到控制器
- Ember JS -无法循环从模型返回的数组,即使它是一个数组
- 从骨干模型返回承诺