我正在使用Polymer Designer中的代码镜像组件,可以设置初始值,但看不到如何从用户那里获得对代码的更改。
我使用初始化代码镜像
<code-mirror id="code_mirror" value="{{code}}">
</code-mirror>
并且希望侦听{{code}}中的更改,但codeChanged似乎未启动。
我知道我可以使用code_mirror.$获得实际值。mirror.getValue(),但希望使用数据绑定。
我试着用零钱,但没有用。
假设您使用https://github.com/PolymerLabs/code-mirror您需要做的是使在ready
中创建的CodeMirror
实例处理实例本身正在发出的一些事件,然后使code-mirror
元素激发任何自定义事件(我知道它被称为事件中继)
以下示例使聚合物元素在编辑器值更改时激发自定义事件code-change
ready: function() {
var me = this;
//...
this.mirror = CodeMirror(this.shadowRoot, { /* ... */ });
this.mirror.on('change', function () {
// me = polymer instance
me.fire('code-change', { value: me.mirror.getValue() })
});
}
然后,聚合物自定义元素的任何实例都需要使用polymer的声明性事件映射或通过addEventListener
来侦听该事件
第一种情况(如果code-mirror
在另一个<polymer-element />
内):
<code-mirror on-code-change="{{ onCodeChange }}"></code-mirror>
// ...
<script>
Polymer({
onCodeChange: function(event, detail, sender) { ... }
});
</script>
第二种情况():
<code-mirror></code-mirror>
<script>
document
.querySelector('code-mirror')
.addEventListener('code-change', function () { ... });
</script>