gpt4 book ai didi

javascript - Backbone.js View - 将事件绑定(bind)到 "el"之外的元素

转载 作者:行者123 更新时间:2023-12-03 08:06:29 24 4
gpt4 key购买 nike

this的第二个回答问题很好地解释了 Backbone.js View 中的事件声明如何限定在 View 的 el 范围内。元素。

将事件绑定(bind)到 el 范围之外的元素似乎是一个合理的用例。 ,例如页面不同部分的按钮。

实现这一目标的最佳方法是什么?

最佳答案

没有真正的理由要绑定(bind)到 View 之外的元素,
还有其他方法。

该元素很可能在它自己的 View 中,(如果不是,请考虑给它一个 View !)
既然它在它自己的 View 中,你为什么不在那里进行绑定(bind),并在回调函数中,
使用 .trigger(); 触发事件。

subscribe to that event在您当前的 View 中,并在触发事件时触发正确的代码。

看看 JSFiddle 中的这个例子,http://jsfiddle.net/xsvUJ/2/

这是使用的代码:

var app  = {views: {}};

app.user = Backbone.Model.extend({
defaults: { name: 'Sander' },
promptName: function(){
var newname = prompt("Please may i have your name?:");
this.set({name: newname});
}
});

app.views.user = Backbone.View.extend({
el: '#user',
initialize: function(){
_.bindAll(this, "render", "myEventCatcher", "updateName");
this.model.bind("myEvent", this.myEventCatcher);
this.model.bind("change:name", this.updateName);
this.el = $(this.el);
},
render: function () {
$('h1',this.el).html('Welcome,<span class="name">&nbsp;</span>');
return this;
},
updateName: function() {
var newname = this.model.get('name');
console.log(this.el, newname);
$('span.name', this.el).text(newname);
},
myEventCatcher: function(e) {
// event is caught, now do something... lets ask the user for it's name and add it in the view...
var color = this.el.hasClass('eventHappened') ? 'black' : 'red';
alert('directly subscribed to a custom event ... changing background color to ' + color);
this.el.toggleClass('eventHappened');

}
});

app.views.sidebar = Backbone.View.extend({
el: '#sidebar',
events: {
"click #fireEvent" : "myClickHandler"
},
initialize: function(){
_.bindAll(this, "myClickHandler");
},
myClickHandler: function(e) {
window.user.trigger("myEvent");
window.user.promptName();
}
});


$(function(){
window.user = new app.user({name: "sander houttekier"});
var userView = new app.views.user({model: window.user}).render();
var sidebarView = new app.views.sidebar({});
});

关于javascript - Backbone.js View - 将事件绑定(bind)到 "el"之外的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274257/

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