我注意到如果我在任何web ui代码中都不使用@observable
所有字段/成员更改都会使用数据绑定语法自动获取。
我遇到的问题是在扩展WebComponent并应用@observable
注释的类中选择一个字段时,现在其他字段无法正确绑定并显示更改。
这是一个已知问题还是功能正常?
如果我使用@observable
一次注释,我应该将它应用于所有字段吗?
答案 0 :(得分:4)
正如另一篇文章所述,您可以选择使用@observable
标记一个类。
你现在陷入了可观察者和观察者之间。看守(和派遣)是旧的方式,很快就会被逐步淘汰。可观察量是新的方式。为了不打破老客户,我们让观察者进入。如果您使用了至少一个@observable
,那么观察者系统将被禁用。
新的MDV v2实现正在准备中。我建议您使用@observable
来查看您想要的任何内容。到处停止使用dispatch()
。另外,停止使用可观察的顶级字段,因为它们不能绑定到节点中。
我建议您在此处阅读有关MDV v2的更多信息:https://github.com/toolkitchen/mdv/blob/stable/README.md以便为更改做好准备。
我怀疑@observable
将继续是一个选项,所以现在继续使用它是可以的。
答案 1 :(得分:3)
从documentation here来看,这似乎是我设计的。 @observable
的目标是将该成员标记为绑定有趣,与其他成员不同。
如果您不想单独注释每个字段,也可以使用@observable
对类本身进行注释:Marking a class as @observable is the same as marking all of its fields as @observable
答案 2 :(得分:1)
今天,我对@observable
做了一个很好的发现:如果您在组件的dart代码之外更改观察值(使用query("#component_id").xtag
),则该字段需要标记为@observable
- 否则,组件将不会注意到值的更改。
或者,在更改值后,可以调用dispatch()
。我目前正在测试什么更快,但我认为它可能是注释。
这不是问题的直接答案,但在决定使用注释或不使用注释时可能值得考虑这一点。