backbone.js在其他模型中渲染/创建多个模型
backbone.js rendering/creating multiple models within other models
我想要以下东西。想象一下,你的家庭作业有几个问题和一个分数。每个问题都有几个部分和一个难度等级。每个部分都有正确或错误的属性。
我想通过嵌套模型来实现这个逻辑(或者不管你能做什么,这只是我的最佳猜测)。因此,会有一个模型"零件"具有正确或错误的属性。然后会有一个称为问题的模型,它有几个相关的部分(一个集合?不确定这是否可能)和一个属性难度。然后你会有一个模型家庭作业,它会有几个相关的问题和一个属性等级。
我的问题是:
这可能吗?如果是这样的话,一般模型创建的语法是什么?呈现这个的语法是什么?
我正在寻找这样的通用产品:
var Homework=Backbone.model.extend({
defaults:{
grade:100,
parts: var parts=Backbone.model.extend({ .... //this definitely seems wrong });
},
});
var Homeworkview=Backbone.view.extend({
initialize: function(){
//create one question with one part
},
render: function(){
//render template for homework grade then call function to render question, which then renders parts},
});
你是怎么做到的?
有很多方法可以做到这一点。Backbone Layout Manager提供了一种很好的、惯用的方法来处理嵌套模型,但对于较小(或更专业)的应用程序,您可能会发现自己想要推出自己的应用程序。由于Homework
和Problem
之间的关系似乎与Problem
和Part
之间的关系非常相似,因此有一种方法可以处理前者之间的关系。
首先定义您的模型和集合:
var Problem = Backbone.Model.extend({
// defaults, constructor, etc.
});
var ProblemCollection = Backbone.Model.extend({
model: Problem
});
接下来,"父"模型将需要一些方法来跟踪一系列问题。如果需要的话,我在这里写了一个更多的解释,但总体思路如下:
var Homework = Backbone.Model.extend({
defaults:{
grade:100,
problems: []
},
initialize: function () {
// initialize a collection of the "Problems" in this Homework
this.problems = new ProblemCollection(this.get('parts'));
}
});
接下来是视图。子视图可以是您想要的任何视图。
var ProblemView = Backbone.View.extend({
tagName: 'li'
// rendering, initializers, etc.
});
父视图可能会稍微复杂一些。由于Homework
模型中存储了所有Problem
模型的集合,因此可以根据需要为每个模型创建一个新视图。
var HomeworkView = Backbone.View.extend({
render: function () {
// create a container for problems
var $problems = $('<ul class="problem-list"></ul>');
// create a view for each problem
this.model.problems.each(function (model) {
var $problem = $('<li class="problem"></li>'),
problemView = new ProblemView({
model: model,
el: el
});
$problems.append($problem);
});
this.$el.empty().append($problems);
return this;
}
});
希望这能有所帮助!
相关文章:
- 使用导航属性创建Kendo UI网格模型的问题
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- sailsjs在创建两个模型时的错误处理
- 如何为动态创建的文本区域中输入的值更新ng模型
- 为各种模型动态创建隐藏的表单字段(MVC 4)
- 在Knockout.js模型中创建项之间的关系
- 在汇编中的yaml前端创建复杂的数据模型
- 通过当前路由器's模型转换为Ember.js中创建的对象
- 使用模型创建实例显示'不是函数'(节点使用猫鼬)
- Knockout JS将我的视图模型创建更改为使用映射pulgin
- 从筛选的模型创建集合
- 角度 - 基于模型创建指令
- 在骨干中为相关模型创建视图和模板
- AngularJS请求模型在另一个模型创建[NodeJS]之前
- 如何使用可观察模型创建数据源
- Backbone.js模型:创建和保存的URL不同
- 在AngularJS中为ng模型创建动态名称
- 如何从视图模型创建Html表
- 如何在sharepoint 2013中使用javascript对象模型创建一个站点列类型作为选择
- BackboneJS使用不同的URL保存模型(创建/更新)