我有 2 个带有 id 的文本字段source,destination
。如果任何字段值更改,则相应的模型属性将更改。我用Backbone.Model and events object in Marionette.CompositeView
. 它工作正常。
一旦任何模型属性发生变化,相应的函数就会调用。为此,我编写了以下代码。即使两个函数都在评估一个属性更改,它也不起作用。
型号代码:
var mapModel = Backbone.Model.extend({
defaults: {
startPlace: "",
endPlace: ""
}
});
Marionette.Composite查看代码:
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 个警报框(“开始”,“结束”)。
最初,如果您在第二个字段(目的地)中输入任何值,则会得到 4 个警报框(“开始”、“结束”、“开始”、“结束”)
我尝试了很多,但我不明白问题出在哪里
谁能帮我。
谢谢