Fwd: 关于buffalo的加载结束判断

1 view
Skip to first unread message

Michael Chen

unread,
May 26, 2008, 11:38:45 PM5/26/08
to am...@googlegroups.com
---------- Forwarded message ----------
From: 郭贤杰 <gxj...@gmail.com>
Date: 2008/5/27
Subject: 关于buffalo的加载结束判断
To: mech...@gmail.com


你好,
在绑定了select后,使用js对select的DOM进行操作,但是此时select的内容还没加载完,导致之后的js操作找不到option。我尝试在加载和对select的js操作之间添加alert(0),这样就能在加载完后执行后来的js操作(选择'确定'按钮后应该加载完了)。针对这个问题,不知道buffalo有没有提供相关的判断加载结束的标志可以使用,或者别的解决方法。
由于论坛的帐号还在审核,所以先发邮件给你了。
thanks
sincerely

--
Michael Chen
--------------------------------
Blog: http://michael.nona.name
MSN: jzch...@hotmail.com

Michael Chen

unread,
May 26, 2008, 11:40:55 PM5/26/08
to am...@googlegroups.com
buffalo本身没有提供这种机制,但js本身的window.onload是可以使用的,另外,prototype提供了:

Event.observe(window, "load", function(){
alert("it will be called when page loaded.");
})

2008/5/27 Michael Chen <mech...@gmail.com>:

Yan JiaCheng

unread,
May 27, 2008, 3:31:07 AM5/27/08
to am...@googlegroups.com
多谢你的帮助。
对了,上次的回退功能,应该在switchView()默认DIV ID=body的情况下才可以的吧,如果是其它的ID名称,回退失效。
希望BUFFALO有更大的进步。

2008/5/27 Michael Chen <mech...@gmail.com>:



--
Thanks & Best Regards!
Please access my blog:
http://spaces.msn.com/members/acaleph2008

gxj413

unread,
May 27, 2008, 9:14:37 AM5/27/08
to buffalo与Amowa
感谢michael 的回复
可能我之前对问题的描述不太详细,导致了我的问题变成了"如何在页面加载时获取<select></select>之间的options"。

我要做的工作是在加载一个修改功能的页面时从数据库读取一系列数据,假设结果为A,B,C三条,而由于是修改的步骤,因此B是作为已选值,那么HTML
应该为
<option>A</option>
<option selected='selected'>B</option>
<option>C</option>
在使用了buffalo.bindReply('service.retrieveData', [], 'select_id');后,html结果
只是
<option>A</option>
<option>B</option>
<option>C</option>
默认显示第一项A
而似乎bindReply或是jtext、jvalue中并没有那一项参数控制selected的option

幸运地,我最后解决了问题,在这里可以分享下解决的过程,不足请斧正:
1、bindReply与remoteCall并不是'相对同步'的。文档里提到
buffalo.remoteCall(...); //AA
buffalo.remoteCall(...); //BB
1.2+版本中当js中同时存在多个remoteCall时,只有在AA完成返回后BB才开始执行;
然而,在
buffalo.bindReply(...); //CC
buffalo.remoteCall(...); //DD
并列出现时,它们却是'相对异步'的,即同时进行。
这是我打算在DD中调用一个空操作,
然后在回调时设置selected的option,
后来发现CC还没有返回所有的options,
因此最后的结果还是
<option>A</option>
<option>B</option>
<option>C</option>

2、解决方法。改用remoteCall,在回调中写入循环生成option,形如
buffalo.remoteCall('service.retrieveData', [..], function(reply) {
var result = reply.getReply();
//添加options到select中
jQuery(result).each(function() {
var optStr='<option value=\"' + this.value + '\">' + this.text +
'</option>';
jQuery('#selectId').append(optStr);
});
//设置selected的option
jQuery('#selected').attr('value', 'B');
})

thx
sincerely


On 5月27日, 上午11时40分, "Michael Chen" <mechil...@gmail.com> wrote:
> buffalo本身没有提供这种机制,但js本身的window.onload是可以使用的,另外,prototype提供了:
>
> Event.observe(window, "load", function(){
> alert("it will be called when page loaded.");
>
> })
>
> 2008/5/27 Michael Chen <mechil...@gmail.com>:
>
>
>
> > ---------- Forwarded message ----------
> > From: 郭贤杰 <gxj...@gmail.com>
> > Date: 2008/5/27
> > Subject: 关于buffalo的加载结束判断
> > To: mechil...@gmail.com
>
> > 你好,
> > 在绑定了select后,使用js对select的DOM进行操作,但是此时select的内容还没加载完,导致之后的js操作找不到option。我尝试在加载和对select的js操作之间添加alert(0),这样就能在加载完后执行后来的js操作(选择'确定'按钮后应该加载完了)。针对这个问题,不知道buffalo有没有提供相关的判断加载结束的标志可以使用,或者别的解决方法。
> > 由于论坛的帐号还在审核,所以先发邮件给你了。
> > thanks
> > sincerely
>
> > --
> > Michael Chen
> > --------------------------------
> > Blog:http://michael.nona.name
> > MSN: jzche...@hotmail.com
>
> --
> Michael Chen
> --------------------------------
> Blog:http://michael.nona.name
> MSN: jzche...@hotmail.com

Michael Chen

unread,
May 27, 2008, 9:34:29 PM5/27/08
to am...@googlegroups.com
请参考 http://buffalo.sourceforge.net/jsapi.html

switchView是switchPart方法的一个快捷方式,也算是一个习惯配置,即当页面存在一个id=body的div时,会自动替换。然而,你可以使用switchPart来进行更细致的配置。

switchPart(viewName, partId, addToHistory)
控制了将哪个url的内容加载到partId的内容中,并且可以指定是否加入到浏览器历史中(使前进后退可用)

2008/5/27 gxj413 <gxj...@gmail.com>:

MSN: jzch...@hotmail.com

Reply all
Reply to author
Forward
0 new messages