Der folgende Code funktioniert nicht. Vielleicht mache ich etwas falsch .. Bitte korrigieren Sie meinen Code:Dart-Polymer: kann kein Attribut aus einem Event-Handler setzen
- index.html:
<html>
<head>
<title>Page</title>
<link rel="import" href="msg_box.html">
</head>
<body>
<msg-box id="msg" caption="Caption 1"></msg-box>
<button id="btn">click me</button>
<script type="application/dart" src="index.dart"></script>
<script src="packages/browser/dart.js"></script>
</body>
</html>
import 'dart:html';
import 'package:polymer/polymer.dart';
import 'msg_box.dart';
void main() {
initPolymer();
ButtonElement btn = querySelector("#btn");
btn.onMouseEnter.listen((e) {
MsgBoxElement elm = querySelector("#msg");
window.alert(elm.caption); // SHOWS 'Caption 1'
elm.caption = "Caption 2"; // DON'T WORK!
window.alert(elm.caption); // SHOWS 'Caption 2', BUT PAGE SHOWS 'Caption 1'!!!
});`
}
- msg_box.html
import 'package:polymer/polymer.dart';
@CustomTag('msg-box')
class MsgBoxElement extends PolymerElement {
// fields
String _caption;
String get caption => _caption;
void set caption(String value) {
_caption = notifyPropertyChange(#caption, _caption, value);
}
MsgBoxElement.created() : super.created() {
}
}
Dieses Problem ist für mich entscheidend. Siehe auch https://code.google.com/p/dart/issues/detail?id=14753&sort=-id&colspec=ID%20Type%20Status%20Priority%20Area%20Milestone%20Owner%20Summary
Dank! Der erste Ansatz funktioniert gut. Der zweite gibt null zurück (Methodenablauf). Deshalb habe ich eine Ausnahme bekommen. – Roman
Das gleiche Problem gefunden .. Ich schlage vor, dass Sie nicht Ihr eigenes 'main()' verwenden und weiterhin 'polymer/init.dart' verwenden und dann' @CustomTag ('msg-box') 'und/oder' @ initMethod' verwenden Rufen Sie Ihre eigenen Methoden auf. Denken Sie daran, dass @ @ initMethod Aufrufe vor '@ CustomTag' ... – chameleon95
Was sind die Nachteile von laufendem Code mit der Dirty-Check-Zone? Gibt es Alternativen dazu? Und noch philosophischer: Warum ist es nicht möglich, einen korrekten Konstruktor für eine Klasse zu erstellen, die von PolymerElement erbt? –