У меня есть 2 текстовых поля с идентификатором source,destination
. Если какое-либо значение поля изменяется, соответствующий атрибут модели будет изменен. Я сделал это, используя Backbone.Model and events object in Marionette.CompositeView
. он работает нормально.Как использовать modelEvents в Marionette.js
Как только любая функция изменения атрибута соответствующей функции вызовет. Для этого я написал следующий код.it не работает, проблема заключалась в том, что даже один атрибут меняет обе функции, которые оцениваются.
модель Код:
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 коробки Alert ("Пуск", "конец").
Первоначально Если ввести любое значение во втором поле (назначения) получать 4 коробки оповещения («Пуск», «конец», «начать», «конец»)
Я пробовал много, но я не понял, где у меня проблема
Может кто-нибудь мне помочь.
Благодаря
Спасибо за ваш ответ, во всех случаях первое полевое мероприятие работает нормально. Но второе полевое событие выполняется 2 раза. Из-за этого я получаю 2 окна оповещения («конец», «конец»). Как я могу это исправить. – user2873816
Да, это то, что происходит с пространством. Когда изменяется атрибут, срабатывает событие «change», два слушателя слушают «change» и все увольняются. Исправление состоит в том, чтобы заменить пространство на два столбца на два события, как я уже упоминал в ответе. –
Я заменяю свой код кодом следующим образом: change: startPlace и change: endPlace'. Если первое значение поля меняется, я получаю одно окно с предупреждением, так что это нормально. Если я использую второе значение поля, то у меня есть 2 окна оповещения («конец», «конец»). – user2873816