【发布时间】:2010-07-09 13:17:47
【问题描述】:
我正在尝试在一些定制模型之间实现绑定,并且刚刚开始涉足整个 mx.binding.* 集合。我尝试了这个简单的、精简的示例,但无法使绑定正常工作。谁能告诉我哪里出错了?
// Model
package
{
import flash.events.EventDispatcher;
public class Model extends EventDispatcher
{
private var m_count:uint = 0;
[Bindable]
public function get Count():uint
{
return this.m_count;
}
public function set Count(c:uint):void
{
this.m_count = c;
}
}
}
这就是应用程序 MXML 的样子
// MXML
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:core="*" creationComplete="this.init();">
<mx:Script>
<![CDATA[
import flash.events.Event;
import flash.utils.describeType;
import mx.binding.utils.ChangeWatcher;
[Bindable]
public var model:Model;
public function init():void
{
var _this:Object = this;
this.addEventListener(Event.ENTER_FRAME, function(e:Event):void {
_this.model.Count++;
});
this.model = new Model();
trace(ChangeWatcher.canWatch(this.model, "Count")); // This always returns false for some reason
trace(describeType(this.model));
}
public function UpdateText(s:String):void
{
trace(s);
}
]]>
</mx:Script>
<mx:Text text="{this.model.Count}" creationComplete="trace(this);" />
</mx:WindowedApplication>
更新:我尝试了一个更简单的版本,如下所示。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="this.m_init();">
<mx:Script>
<![CDATA[
import mx.binding.utils.ChangeWatcher;
[Bindable] public var m:Object = new Object();
public function m_init():void
{
trace(ChangeWatcher.canWatch(this, "m"));
}
]]>
</mx:Script>
<mx:Text text="{this.m}" />
</mx:Application>
还是。没有。工作。尽管文本字段显示 [object Object],但 ChangeWatcher.canWatch 仍然返回 false。
【问题讨论】:
-
您的示例适用于我的 Flex 3 SDK。
canWatch返回 true 并且绑定有效,我得到一个不断计数的文本字段。 -
这让我怀疑我的配置是否有问题。你能给我一些指点吗?
-
您使用的是 Flex 3 还是 Flex 4 SDK?
-
Flex 3.5.0,内部版本 12683。这是来自 AIR 2 SDK 的 beta 2。我现在正在下载 Flex 3 SDK 的最终版本并再次尝试。
-
更新:使用新的 SDK 仍然返回 false。
标签: apache-flex binding adobe