我在HTML文件中有两个表行。单击第一行时,它将通过classes.add(“active_style”)更改其样式。如果第二行被单击,我想清除第一行的样式。
我知道我可以写...
querySelector(“#first_row_div”)。classes.clear();
为了清除第一行类(然后重置其样式),但是在更大的代码中,我认为可观察将是最合适的。
我不知道是否可以观察到这一点。但是,如果可以,我该怎么做?
编辑/更新:我认为正确的问题是“当变量被更改时,有什么方法可以运行函数吗?”。
谢谢您的帮助!
最佳答案
您可以为某个字段创建一个 setter/getter / setter ,并在 setter 中运行您的函数。
class MyClass {
String _cssClass;
String get cssClass => _cssClass;
set cssClass(String newClass) {
_cssClass = newClass;
updateDom();
}
void updateDom() {
// do important work here
}
}
您可以使用扩展
Observable
的模型类。在这里,您必须调用
dirtyCheck()
以使Observable
检查更改并通知侦听器。Dart还提供ChangeNotifier mixin。在这里,您不需要调用任何方法进行脏检查。进行更改后,将调用侦听器。
我刚才在检查功能时写的一个简单示例
import 'package:observe/observe.dart';
class Notifiable extends Object with ChangeNotifier {
String _input = '';
@reflectable
get input => _input;
@reflectable
set input(val) {
_input = notifyPropertyChange(#input, _input, val + " new");
}
Notifiable() {
this.changes.listen((List<ChangeRecord> record) => record.forEach(print));
}
}
class MyObservable extends Observable {
@observable
String counter = '';
MyObservable() {
this.changes.listen((List<ChangeRecord> record) => record.forEach(print));
}
}
void main() {
var x = new MyObservable();
x.counter = "hallo";
Observable.dirtyCheck();
Notifiable notifiable = new Notifiable();
notifiable.input = 'xxx';
notifiable.input = 'yyy';
}
关于css - Dart语言:可观察,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24248787/