在 Dart 中以编程方式通知 Observable-Watchers
Notify Observable-Watchers programmatically in Dart
再一次,一个Dart/Polymer相关的问题。
我想使用 Parse.com JavaScript 库,但由于它在 Dart 中不可用,我编写了 Wrapper 类 来存储 JsObject 并将 Dart 的所有调用委托给相应的 JavaScript 对象。基本上它就像一个代理。
你猜怎么着,效果很好。
但是,我的观察结果没有。要理解这一点,您必须看一下我的 "proxy"-类.
之一的以下结构
class ParseObject extends Observable {
JsObject _jsDelegate = new JsObject(context['Parse']['ParseObject']);
void set(String key, dynamic value) {
_jsDelegate.callMethod('set', [key, jsify(value)];
}
dynamic get(String key) {
return dartify(_jsDelegate.callMethod('get', [key]));
}
}
我的 Polymer Element 的 HTML 代码如下所示:
<div>Name: {{project.get('name')}}</div>
由于数据绑定仅在方法参数更改的情况下计算,它永远不会更新,因此即使名称更改,旧的仍将保留。
我想到的解决方案是将用户在 ParseObject#set(String, dynamic) 方法中设置的所有值存储到一个可观察的 Map 中。这行得通,但我认为它很脏,因为我必须确保两个地图,Dart 中的地图和 ParseObject 的 JavaScript 表示中的地图相等。
因此,我正在寻找更好的解决方案,并且我想到了某种方法来告诉 Polymer 重新评估它的数据绑定。
是否存在这样的方法或是否有任何其他可能解决此问题?
单独扩展 observable 还没有任何作用。
你需要用 @observable
注释 getters(如果你不使用 Polymer,你还需要将 observable transformer 添加到 pubspec.yaml)。您不能使函数可观察(这适用于 Polymer 元素,但不适用于 Observable
模型 类。有关可观察的更多详细信息,请参见 Implement an Observer pattern in Dart or
再一次,一个Dart/Polymer相关的问题。
我想使用 Parse.com JavaScript 库,但由于它在 Dart 中不可用,我编写了 Wrapper 类 来存储 JsObject 并将 Dart 的所有调用委托给相应的 JavaScript 对象。基本上它就像一个代理。
你猜怎么着,效果很好。
但是,我的观察结果没有。要理解这一点,您必须看一下我的 "proxy"-类.
之一的以下结构class ParseObject extends Observable {
JsObject _jsDelegate = new JsObject(context['Parse']['ParseObject']);
void set(String key, dynamic value) {
_jsDelegate.callMethod('set', [key, jsify(value)];
}
dynamic get(String key) {
return dartify(_jsDelegate.callMethod('get', [key]));
}
}
我的 Polymer Element 的 HTML 代码如下所示:
<div>Name: {{project.get('name')}}</div>
由于数据绑定仅在方法参数更改的情况下计算,它永远不会更新,因此即使名称更改,旧的仍将保留。
我想到的解决方案是将用户在 ParseObject#set(String, dynamic) 方法中设置的所有值存储到一个可观察的 Map 中。这行得通,但我认为它很脏,因为我必须确保两个地图,Dart 中的地图和 ParseObject 的 JavaScript 表示中的地图相等。
因此,我正在寻找更好的解决方案,并且我想到了某种方法来告诉 Polymer 重新评估它的数据绑定。
是否存在这样的方法或是否有任何其他可能解决此问题?
单独扩展 observable 还没有任何作用。
你需要用 @observable
注释 getters(如果你不使用 Polymer,你还需要将 observable transformer 添加到 pubspec.yaml)。您不能使函数可观察(这适用于 Polymer 元素,但不适用于 Observable
模型 类。有关可观察的更多详细信息,请参见 Implement an Observer pattern in Dart or