1
我無法從子組件向父組件返回數據並返回到子組件。嵌套聚合物定製組件數據綁定
我做了一個簡單的嵌套組件測試牀。這裏是孩子:
<link rel="import" href="../packages/polymer/polymer.html">
<polymer-element name="child-comp" attributes="x y">
<template>
<input type='text' value='{{x}}'/>
<p>-x={{x}}-</p>
<p>list:
<template repeat='{{y}}'>-{{ }}-</template>
</p>
</template>
<script type='application/dart'>
import 'package:polymer/polymer.dart';
@CustomTag('child-comp')
class ChildComp extends PolymerElement {
@observable var x;
@observable var y;
ChildComp.created() : super.created();
}
</script>
</polymer-element>
它需要一個文本輸入(x)和(輸入後立即P)呼應了出來。它還將x發送回父控件,並將其添加到列表(y)中,然後在列表中對其進行迭代。
這裏是父組件:
<link rel="import" href="../packages/polymer/polymer.html">
<link rel="import" href="../components/child_comp.html">
<polymer-element name="top-comp">
<template>
<child-comp x='{{s}}' y='{{t}}'></child-comp>
</template>
<script type='application/dart'>
import 'package:polymer/polymer.dart';
@CustomTag('top-comp')
class TopComp extends PolymerElement {
@observable String s = '1234';
@observable List<String> t = ['A', 'B', 'C'];
TopComp.created() : super.created();
sChanged(oldVal, newVal) {
t.add(newVal);
}
}
</script>
</polymer-element>
從孩子到家長工作和改變正確添加到列表中。但是List似乎並沒有到達孩子--DOM從未更新過。
我已經試過了裝飾的每一個可能的組合,但也許答案是綁定語法=的變體..
一個側面說明:有沒有對裝飾權威更新的文檔?搜索變成了一堆不同古代的參考資料。
工作!非常感激。你還記得你是如何發現這個的?有沒有什麼能夠說明裝飾者應用時會發生什麼? – timecc 2014-11-06 23:52:05
自從我學習了很長一段時間。不知道從哪裏。但@observable會導致對List的引用拋出PropertyChanged事件,並且toObservable()會獲取List或Map並對內部元素執行相同操作,因此對不改變List引用的元素的更改也會觸發PropertyChanged事件。本質上,就是這樣,無論如何。 – montyr75 2014-11-07 00:07:03