FLEX 数据绑定

yinhunfeixue 2008-09-16 11:43:13
如何绑定一个函数:{fun(参数)}

比如下例,当点击按纽时,TEXT并不改变
package
{
public class test
{

public var att1:Number = 0;
public var att2:Number = 0;
public function test(x1:Number,x2:Number):void
{
att1 = x1;
att2 = x2;
}
}
}

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Text id="txtTest" text="{add(myTest)}" x="69" y="10">

</mx:Text>
<mx:Button label="点我" click="myTest.att1++" x="133" y="52">
</mx:Button>
<mx:Script>
<![CDATA[
[Bindable]
private var myTest:test = new test(1,2);
private function add(t:test):String
{
return (t.att1 + t.att2).toString();
}
]]>
</mx:Script>
</mx:Application>
...全文
504 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinhunfeixue 2008-09-20
  • 打赏
  • 举报
回复
算了,给分。
楼上的书,我们项目组的人已经看完了。
yinhunfeixue 2008-09-19
  • 打赏
  • 举报
回复
嗯,谢谢了。
有什么好书,推荐一下吧。
FLEX的书急缺啊。
leonranri 2008-09-19
  • 打赏
  • 举报
回复
你的代码我早已经试过,希望你找本关于Flex书,好好了解一下绑定的知识。
“Object对象是不完全支持绑定的!!!”
如果想绑定,可以用ObjectProxy这个代理对象
czx33859066 2008-09-19
  • 打赏
  • 举报
回复
FLEX3.0 RIA开发详解
基于ACTIONSCRIPT 3.0 示例
leonranri 2008-09-19
  • 打赏
  • 举报
回复
Flex第一步就算可以了,入门书籍,现在市面上的这类书不多
yinhunfeixue 2008-09-18
  • 打赏
  • 举报
回复
问题栏贴的代码可以直接复制了用,您试一下就知道会不会变了。
yinhunfeixue 2008-09-18
  • 打赏
  • 举报
回复
text="{obj.att1+obj.att2}"
这里绑一个变量是会改变

但是绑一个对象就不会变了。
function MyFun(自定义类的对象):string
{
//进行处理,并返回一个值
}
var object = new 自定义类的构造函数();
text="{MyFun(object)}" //这样就不会变了
leonranri 2008-09-17
  • 打赏
  • 举报
回复
你仔细看一下自定义的类,那就是绑定的,它里面的属性只要改变就会触发Text中text属性的值

再给你举个例子:变量级的绑定
你自定义个ObjectProxy对象,将它绑定在Text的text属性,当你对obj对象进行操作时,如果值改变,变会触发Text的text属性值
如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()" layout="absolute">
<mx:Text id="txtTest" text="{obj.att1+obj.att2}" x="69" y="10">

</mx:Text>
<mx:Button label="点我" click="changeValue()" x="133" y="52">
</mx:Button>
<mx:Script>
<![CDATA[
import mx.utils.ObjectProxy;
[Bindable]
private var obj:ObjectProxy = new ObjectProxy() ;
private function initApp():void{
obj.att1 = 123;
obj.att2 = 234;
}
private function changeValue():void{
obj.att1 = 0;

}

]]>
</mx:Script>
</mx:Application>
这样不知道你理解没有
shi_wen80 2008-09-17
  • 打赏
  • 举报
回复
public function searchResult(evt:ResultEvent) : void {

xxxx.dataProvider = evt.result.Table.Body;



}
Table.Body是xml的格式
<Table>
<Body>
</Body>
</Table>

试试看
yinhunfeixue 2008-09-16
  • 打赏
  • 举报
回复
我绑定的变量是自定义的对象。
当这个对象的某个属性变化时,绑定的TEXT并没改变。

我想知道怎么解决这个问题。

谢谢
leonranri 2008-09-16
  • 打赏
  • 举报
回复
将test这个类绑定,把你的MXML再改一下,你那么写,太浪费代码了
package
{
[Bindable]
public class test
{

public var att1:Number = 0;
public var att2:Number = 0;
public function test(x1:Number,x2:Number):void
{
att1 = x1;
att2 = x2;
}
}
}

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Text id="txtTest" text="{myTest.att1+myTest.att2}" x="69" y="10">

</mx:Text>
<mx:Button label="点我" click="myTest.att1++" x="133" y="52">
</mx:Button>
<mx:Script>
<![CDATA[
private var myTest:test = new test (1,2);

]]>
</mx:Script>
</mx:Application>
yinhunfeixue 2008-09-16
  • 打赏
  • 举报
回复
有些时候,需要绑定的东西比较多。
如果绑定变量,设定的变量会很多。

总之就是需要这样做。

谢谢啦。
kofwr 2008-09-16
  • 打赏
  • 举报
回复
为什么是函数?
函数返回的结果是变量,直接绑定函数计算后的变量即可。

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧