以下代碼不起作用。也許我做錯事。請糾正我的代碼:飛鏢聚合物:不能從事件處理程序中設置屬性
- 的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
<polymer-element name="msg-box" attributes="caption">
<template>
<h4>{{caption}}</h4>
</template>
<script type="application/dart" src="msg_box.dart"></script>
</polymer-element>
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() {
}
}
這個問題對我來說是至關重要的。另請參閱https://code.google.com/p/dart/issues/detail?id=14753&sort=-id&colspec=ID%20Type%20Status%20Priority%20Area%20Milestone%20Owner%20Summary
謝謝!第一種方法很好。第二個返回null(方法運行)。因此我得到了一個例外。 – Roman
找到同樣的問題..我建議避免使用自己的main(),並繼續使用'polymer/init.dart',然後使用@CustomTag('msg-box')'和/或'@ initMethod'調用你自己的方法..記住'@ initMethod'在'@ CustomTag'之前調用... – chameleon95
運行代碼的髒檢區域有什麼缺點?有替代品嗎?更多的哲學:爲什麼不可能爲從PolymerElement繼承的類創建適當的構造函數? –