如果Ajax.Updater更新了dom元素,是否有机会在原型框架内观察?
我想在所有Ajax.Updater调用中观察该事件,而不是在onComplete参数中编写函数。关于如何做到这一点的任何想法?
感谢您的帮助
答案 0 :(得分:1)
有Ajax.Responders
允许您观看'ajax事件'(不是javascript意义上的事件)。 API表示传递给回调的第一个参数是请求者对象,因此您可以具体检查它是否为Ajax.Updater
,然后检查它是.container.success
以查找要更新的元素ID。您可以假设,因为它是onComplete
事件,所以引用的元素将被更改。
答案 1 :(得分:0)
我认为你不能没有onComplete
处理程序,除非你想重写原型ajax API。但是,您不必直接将闭包传递给onComplete
处理程序。
您可以在javascript代码中的顶级范围内创建一个空对象:
var updates = { } ;
现在你要设置onComplete
参数来包含一个紧凑的函数,它通过你更新的div的名称(+多个更新的日期)将属性设置为updates
对象:
function update() {
var divName = arguments[0] ;
var date = new Date() ;
if( updates[divName] ) { //!! if there is an entry for that div fill date
updates[divName].push(date) ;
} else { //!! else create a new array with the current date
updates[divName] = [ date ] ;
}
}
现在,您可以通过div的名称检查属性对象来检查更新:
/* code */
if( updates[divName] !== null ) {
isAlreadyUpdated() ;
} else {
isNotAlreadyUpdated() ;
}
/* more code */
顺便说一下,我不排除原型API中可能会有类似方法的方法。我对原型并不熟悉。
如果没有,我希望这会有所帮助!
FK