我什么时候需要在Dart中调用watchers.dispatch()?

我什么时候需要在Dart中调用watchers.dispatch()?,dart,dart-webui,Dart,Dart Webui,我正在构建一个与示例非常相似的小应用程序 我使用的是Dart SDK版本0.5.9.0\u r22879 主要区别在于,我通过AJAX请求更新结果,并且我只在输入控件中按下Enter时发出此请求 在我的代码中,除非我显式调用watchers.dispatch(),否则不会呈现结果列表,如第二个示例中所述 为什么??不清楚何时必须显式调用watchers.dispatch(),以及何时自动调用,如模板示例中所示 我的HTML: 我的应用程序 我的应用程序 没有火柴 {{results.lengt

我正在构建一个与示例非常相似的小应用程序

我使用的是Dart SDK版本0.5.9.0\u r22879

主要区别在于,我通过AJAX请求更新结果,并且我只在输入控件中按下Enter时发出此请求

在我的代码中,除非我显式调用
watchers.dispatch()
,否则不会呈现结果列表,如第二个示例中所述

为什么??不清楚何时必须显式调用
watchers.dispatch()
,以及何时自动调用,如模板示例中所示

我的HTML:


我的应用程序
我的应用程序
没有火柴
{{results.length}}项:
  • {{entry.message}
myapp.dart的重要部分包括:

导入'dart:html';
将“dart:json”导入为json;
导入'dart:uri'作为uri;
导入“包:web_ui/web_ui.dart”;
导入“包:web_ui/watcher.dart”作为观察者;
字符串searchText='';
列出结果=[];
bool get noMatches=>results.isEmpty;
void main(){
查询(#搜索框”).onKeyPress.listen((e)=>handleKeyPress(e));
}
无效手柄按键(键盘事件e){
如果(!e.ctrlKey&&e.keyCode==keyCode.ENTER){
doSearch();
}
}
void doSearch(){
如果(搜索文本!=''){
makeRequest();
}
}
void makeRequest(){
HttpRequest.getString('http://url.to/rest-api?q=$searchText')
.then(处理字符串)
.catchError(handleError)
;
}
processString(字符串jsonString){
List logs=JSON.parse(jsonString);
结果:清晰();
results.addAll(logs.map((l)=>newappentry.fromJson(l));
watchers.dispatch();
}
handleError(错误){
打印(“请求失败”);
打印(错误);
}
阶级出现{
最终字符串消息;
fromJson(映射json):message=json['message'];
}

当您需要以不由模板触发的事件触发的方式更改模型时,需要显式调用
watchers.dispatch()
。这意味着AJAX调用,如示例中的计时器等

模板安装的事件负责为您调用
dispatch()

你可以找到更多关于这个的信息


然而,目前,
watchers.dispatch
被视为“老办法”,因为Web UI的目标之一是使绑定更具声明性和可观察性。因此,未来的解决方案是在模型上使用注释。这将确保每次模型更改时都会更新观察者,而无需您显式更新它们。

只要您需要以不由模板触发的事件触发的方式更改模型,就需要显式调用
watchers.dispatch()
。这意味着AJAX调用,如示例中的计时器等

模板安装的事件负责为您调用
dispatch()

你可以找到更多关于这个的信息

然而,目前,
watchers.dispatch
被视为“老办法”,因为Web UI的目标之一是使绑定更具声明性和可观察性。因此,未来的解决方案是在模型上使用注释。这将确保每次模型更改时都会更新观察者,而无需您显式地更新它们