我正在尝试让数据绑定在dart中工作。基本上我做的和这个视频里的一样。使用伪代码,它看起来像这样:
mdv.init();
var p = new Person('john');
query('#someId').model = p;
在html文件中,我还有一个可以正常工作的模板。目前,我只想让单向数据绑定工作,尽管模板已正确初始化,但对变量p的后续更改在模板中不可见。我试图触发像这样的更新
node.model = null;
node.model = p;
但是,这不会触发更新。但如果我使用延迟,它确实有效:
node.model = null;
new Timer(new Duration(milliseconds:20),(){
node.model = p;
});
所以我有几个问题:
- 为什么变量中的更改不反映模板中的更改
- 模板不应该按照我的方式更新吗?还是mdv/聚合物没有按预期方式工作
- 是否可以手动触发模板更新
- 是否可以轻松地将单向数据绑定转换为双向数据绑定(即,通过使psuedocode中的Person类可观察或其他方式)
附言:在这里发帖之前,我搜索并尝试了几件事。我发现了一个创建自定义聚合物元素的主题,这似乎比我希望的更麻烦。我还尝试了花哨的语法lib(这并没有改善它)和databinder(编译错误)。我还读了几页关于聚合物的文章,但我不确定什么与dart相关,并且没有被弃用(或者页面上方的警告中提到的"过时")。
您需要以下包之一,以便在更改时自动更新绑定。
- mdv_oserve
- 观察
文档(可观测)
我仍然建议您将"polymer"作为依赖项添加到您的pubspec.yaml中(删除mdv)。这样您就不必处理版本问题,并且可以保证一组"已确认"的包可以一起工作。