题
我不知道如果我误解Flex中的绑定。我使用Cairngorm框架。我有以下组分与类似的代码:
[Bindable]
var _model:LalModelLocator = LalModelLocator.getInstance();
....
<s:DataGroup dataProvider="{_model.friendsSearchResults}"
includeIn="find"
itemRenderer="com.lal.renderers.SingleFriendDisplayRenderer">
<s:layout>
<s:TileLayout orientation="columns" requestedColumnCount="2" />
</s:layout> </s:DataGroup>
模型中的定位器:
[Bindable]
public var friendsSearchResults:ArrayCollection = new ArrayCollection();
在项目渲染器有一个调用命令和命令结果内有这样的线的按钮:
model.friendsSearchResults = friendsSearchResults;
把破发点,并加强通过我确认这就像被调用和friendsSearchResults被更新的代码。
据我了解,如果我更新可绑定变量它会自动重新呈现S:这有一个变量的数据提供程序DATAGROUP。
解决方案
有什么明显的错误代码样本。它应该工作,所以我觉得有一个问题在其他地方。
我建议设置其中dataProvider
被分配,并且还其中model.friendsSearchResults
被分配一个断点。确保他们都指向同一个对象实例。然后通过属性分配和对应的事件步骤。
使调试容易,你可以切换到使用命名的事件,而不是默认的。随着一个指定的事件,有兴趣在您的特定属性只事件侦听器被触发而不是听任何属性更改任何侦听器。这是更容易调试和运行速度将更快。例如,变化:
[Bindable]
public var results:ArrayCollection;
到
[Bindable("resultsChanged")]
private var _results:ArrayCollection;
public function get results():ArrayCollection {
return _results;
}
public function set results(value:ArrayCollection):Void {
_results = value;
dispatchEvent(new Event("resultsChanged"));
}
要记住的另一件事是,绑定隐藏某些错误,如空引用例外。他们认为价值根本还不可用,并取消错误。通过分配和相关的绑定步进将有助于找到这样一个问题。
不隶属于 StackOverflow