在.NET中,您可以将多个处理程序添加到对象声明为事件的事件中。非DOM对象的JavaScript事件处理(注册多个处理程序)
在JavaScript中处理非DOM对象的推荐方式是什么?
即我有一个对象:
var ProblemDomainObj = {} ;
ProblemDomainObj.Changed = function() {} ;
ProblemDomainObj.Data = { somedata : "initialized" } ;
ProblemDomainObj.Operate = function (newdata) {
if (newdata != somedata && ProblemDomainObj.IsValid(newdata)) {
somedata = newdata;
ProblemDomainObj.Changed();
}
} ;
现在其他对象可能要注册到知道数据已发生变化,每个想要做这样的事情:
ProblemDomainObj.Changed += function() {
/* Do stuff to reflect the object model changes */
} ;
如果每个获得注册他们的处理程序而不覆盖另一个。
然后一些对象会调用ProblemDomainObj.Operate(foo);
,所有已订阅的人都会收到通知。
我在jQuery中找到了http://api.jquery.com/on/的文档,但它似乎与像onclick这样的DOM事件有关。这些都不一定与DOM有关。
你写C#中的JavaScript。您可能想要退后一步并完全学习JavaScript – Raynos
@Raynos JavaScript中是否存在原生习惯,否定了订阅对象事件的需要,以便您可以将组件解耦以了解其他组件,以了解想要了解有关它们引发的事件的其他组件? –
不,但写一个是10行,如图所示 – Raynos