主题:  :o Flash remoting mx 学习笔记(更新)

s22

职务:版主
等级:4
金币:10.0
发贴:1634
#162003/3/20 14:41:38
=========
Strict array
 var myArray = new Array(); 
myArray[0] = "zero"; 
myArray[1] = "one"; 
myService.myMethod(myArray);

 The Flash Remoting service converts the array argument to a ColdFusion MX array. All CFML array operations work as expected. 


  
  
  
  ...


 ==============
Named or associative array
 var myStruct = new Array(); 
myStruct["zero"] = "banana"; 
myStruct["one"] = "orange"; 
myService.myMethod(myStruct);

 In ActionScript, named array keys are not case-sensitive. 


  
  
  
  ...


 ==============
Named arguments using object initializer 
 myService.myMethod({x:1, y:2, z:3});

 Provides a convenient way of passing named arguments to ColdFusion pages. Access these arguments as normal named arguments of a component function.


  
  
  
  
  
  
  ...


另外传递单个字符串跟传递object一样调用
如:  
 =============


编辑历史:[这消息被s22编辑过(编辑时间2003-03-20 16:32:39)]


s22

职务:版主
等级:4
金币:10.0
发贴:1634
#172003/3/20 14:45:04
上面这里就是CFC的数据转换图了。
ok现在来回忆刚才的冬冬。
parkService.getParksList(cb_parkType.getSelectedItem());
getSelecteditem();
应该是这个样子。呵呵。
parkService.getParksList({parkType:xxx,__id__:id})
到这里还有一点没有讲解完毕。我们继续努力。



s22

职务:版主
等级:4
金币:10.0
发贴:1634
#182003/3/20 15:00:51
现在看看parkService.getParksList怎么处理结果的。
function getParksList_Result(result){
	trace("server responded: Records: " + result.getLength());
	trace("setting the ListBox");
	// Use DataGlue Binding to create a differnent label and Value pair
	// The Value is what will be sent to the function, and is what the DB will match
	DataGlue.BindFormatStrings(lb_ParkList, result, "#parkName# (location: #city#, #state#)", "#parkName#");
	}

dataglue是什么冬冬?还是看看帮助文档怎么说。 :D
MM说:这东西是来帮助我们把记录集输入UI组件的冬冬。就俩方法。看来不是多难。(Easy binding of RecordSets to UI components)
格式:DataGlue.bingFormatStrings(dataConsumer, dataProvider, labelString, dataString)
如果你觉得    DataGlue.BindFormatStrings(lb_ParkList, result, "#parkName# (location: #city#, #state#)", "#parkName#");太复杂,不如这样改改
    DataGlue.BindFormatStrings(lb_ParkList, result, "#parkName# , "#parkName#");

编辑历史:[这消息被s22编辑过(编辑时间2003-03-20 15:05:31)]


s22

职务:版主
等级:4
金币:10.0
发贴:1634
#192003/3/20 15:48:04
现在看看lb_parkList的change handler:getParkDetails
显尔易见,得到park的详细资料。
[code]
//客户调用服务。
function getParkDetails() {
    // Invoked when a user selects a park Type from the ComboBox
    trace("sent request. ParkNAME: " + lb_ParkList.getvalue());
    // invoke the "getParksList" method in the parkService service, send current selection
    parkService.getParkDetails(lb_ParkList.getvalue());
}
//server端的cfc
SELECT * FROM tblParks WHERE ParkName='#thisParkName#'
//结果控制
function getParkDetails_Result(result){
    trace("server responded: Records: " + result.getLength());
    // This function will be invoked by the server when it has finished processing
    _root.dsp_ParkName=result.items[0].ParkName;
    _root.dsp_ComPhone=result.items[0].ComPhone;
    _root.dsp_Address1=result.items[0].Address1;
    _root.dsp_Address2=result.items[0].Address2;
    _root.dsp_Address3=result.items[0].Address3;
    _root.dsp_CityState=result.items[0].city + ", " +result.items[0].state;
    _root.dsp_zipCode=result.items[0].dsp_zipCode;
    _root.dsp_region="REGION: "+ result.items[0].region;
    _root.dsp_ManagerHours="MANAGER: "+ result.items[0].suptMgr + " OFFICE HOURS: "+ result.items[0].offHrs;
}

编辑历史:[这消息被s22编辑过(编辑时间2003-03-20 15:51:07)]


s22

职务:版主
等级:4
金币:10.0
发贴:1634
#202003/3/20 16:36:02
把下边这些东西看看,今天的这个MM教程就OVER了,预祝美国也over
function getParkTypes_Result(result) {
	// This function will be invoked by the server when it has finished processing
	for(i=0;i
我修改了这两个函数,应该可以看出来传递字符串跟传递OBJECT的结果是一样的。getvalue没有传递__id__,本来也不需要

编辑历史:[这消息被s22编辑过(编辑时间2003-03-20 16:38:28)]


namelysweet

职务:普通成员
等级:3
金币:1.0
发贴:681
#212003/3/21 0:31:18
建议:能否整理成*.ZIP文件以提供大家下载呢??谢谢,万分感谢! ;)


::和讯网 www.homeway.com.cn ::


s22

职务:版主
等级:4
金币:10.0
发贴:1634
#222003/3/21 12:21:14
不提供zip下载。自己保存页面就好了。
===========
下面是帝国的jimlee翻译的东西。
下载:http://www.xtkeling.com/frnote.doc

编辑历史:[这消息被s22编辑过(编辑时间2003-03-24 12:24:27)]