私はバックボーンに不慣れで、問題で立ち往生しています
要するに問題
表示するリストが2つあります。
1.コース
2.選択したコースの学生
私は今それを示すことができます。
これで、StudentListビュー(「Students」コレクションを使用)に、選択したコースアイテム(別のビューにあります)の学生を追加する追加ボタンがあります。そのためには、StudentListビュー内でクリックしたコースアイテムを知る必要があります。そのために、コースがクリックされたときにコースIDを非表示フィールドに保存し、後で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に投稿した質問の続きです 。イベントアグリゲーターを使用してバックボーンjsに異なるモデルのビューをロードする このリンクは、私の質問の詳細を知るのに役立つ場合があります。
お待ち頂きまして、ありがとうございます