我是骨干新手,我遇到了一个问题
简而言之问题
我有两个要显示的列表。
1.课程
2.所选课程的学生
我现在可以展示。
现在在StudentList 视图中(它使用“学生”集合)我有一个添加按钮,它为所选课程项目添加学生(在单独的视图中)。为此,我需要知道我在StudentList 视图中单击了哪个课程项目。为此,我在单击课程时将 courseId 存储在隐藏字段中,稍后在StudentList 视图中,我已获取该隐藏字段值以添加新学生。
我想要做的不是将 courseId 存储在隐藏字段中,而是可以在单击课程时将 courseId 作为属性添加到“Students”集合中。
尝试的方法
在 StudentList 视图中,我写了这样的东西
var StudentList = Backbone.View.extend({
initialize: function () {
this._meta = {};
},
put: function (prop, value) {
this._meta[prop] = value;
},
get: function (prop) {
return this._meta[prop];
},
events: {
"click #btnAddStudent": "createNewStudent"
},
createNewStudent: function () {
var some = this.get("someProp");
this.collection.create({ Name: this.$el.find('#txtNewStudent').val(),
CourseId: some });
}
});
在“courseClicked”函数中我已经这样做了(“courseClicked”函数在CourseItem 视图内)
var CourseItem = Backbone.View.extend({
events: {
'click': 'courseClicked'
},
initialize: function () {
this.students = this.options.students;
},
courseClicked: function () {
var courseId = this.model.id;
this.students.put('someProp',courseId);
this.students.fetch({ data: { courseId: courseId} });
}
});
以上不起作用,因为 put 和 get 函数在 courseitem 视图上下文中不可用,它们是在 StudentList 视图中定义的。任何人都可以指导我如何完成我的需求。
这个问题是我之前在SO上发布的问题 的延续Using Event Aggregator to load a view with different model in bone js 这个链接可能有助于了解我的问题的更多细节。
谢谢你的耐心