gpt4 book ai didi

javascript - 如何在 Marionette.js 中使用 modelEvents

转载 作者:行者123 更新时间:2023-11-28 20:11:13 25 4
gpt4 key购买 nike

我有 2 个文本字段,其 ID 为源、目的地。如果任何字段值发生变化,相应的模型属性也会发生变化。我使用 Backbone.Model 和 Marionette.CompositeView 中的事件对象来完成此操作。运行良好。

一旦任何模型属性发生变化,相应的函数就会被调用。为此我编写了以下代码。它不起作用,问题是即使一个属性发生变化,两个函数都在评估。

型号代码:

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">

为模型和 View 创建实例

mapModelObj = new mapModel();
var mapViewObj = new mapView({el:$('#mapDiv'), model:mapModelObj});

问题:

  1. 最初,如果我在第一个字段(源)中输入任何值,则会出现 2 个警报框(“开始”、“结束”)。

  2. 最初,如果您在第二个字段(目的地)中输入任何值,则会出现 4 个警报框(“开始”、“结束”、“开始”、“结束”)

我尝试了很多,但我不明白问题出在哪里

谁能帮帮我。

谢谢

最佳答案

modelEvents 应通过 : 连接。比如说,改变startPlace的事件应该是

'change:startPlace'

如果您使用空格,则会以两个事件结束,而不是一个特定于此属性的事件。

您的代码'change startPlace'代表两个事件,一个是'change',另一个是'startPlace'。所以你会看到“开始”,“结束”,“开始”,“结束”

关于javascript - 如何在 Marionette.js 中使用 modelEvents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com