ID を持つ 2 つのテキストフィールドがありsource,destination
ます。フィールド値が変更されると、対応するモデル属性が変更されます。を使用してこれを行いBackbone.Model and events object in Marionette.CompositeView
ました。それはうまくいっています。
いずれかのモデルの属性変更に対応する関数が呼び出されます。このために、次のコードを書きました。両方の関数が評価している1つの属性の変更でさえ、問題は機能していません。
モデルコード:
var mapModel = Backbone.Model.extend({
defaults: {
startPlace: "",
endPlace: ""
}
});
Marionette.CompositeView コード:
var mapView = Marionette.CompositeView.extend({
events: {
"blur #source": "sAttributeSetting",
"blur #destination": "dAttributeSetting"
},
dAttributeSetting: function() {
this.model.set({"endPlace": document.getElementById(this.ui.destinationPlace).value});
},
sAttributeSetting: function() {
this.model.set({"startPlace": document.getElementById(this.ui.sourcePlace).value});
},
modelEvents: {
"change startPlace": "startMarkerDisplay",
"change endPlace": "endingMarkerDisplay"
},
startMarkerDisplay: function() {
alert("start");
},
endingMarkerDisplay: function() {
alert("end");
}
});
html コード:
<input type="text" id="source">
<input type="text" id="destination">
モデルとビューの両方のインスタンスを作成する
mapModelObj = new mapModel();
var mapViewObj = new mapView({el:$('#mapDiv'), model:mapModelObj});
問題:
最初に最初のフィールド(ソース)に値を入力すると、2つのアラートボックス(「開始」、「終了」)が表示されます。
最初に2番目のフィールド(宛先)に任意の値を入力すると、4つのアラートボックス(「開始」、「終了」、「開始」、「終了」)が表示されます
いろいろ試しましたが、どこで問題が発生しているのかわかりませんでした
誰でも私を助けることができますか?
ありがとう