【发布时间】:2014-07-28 08:10:36
【问题描述】:
我创建了一个包含编辑器 (CKEditor) 的 ember 组件。编辑器的值通过 setData() 和 getData() 访问器更新。我想在我的 ember 控件中实现双向绑定,以便对组件的“内容”字段的编辑流入和流出控件。
到目前为止,我可以很容易地让它以一种方式进行 - 但我尝试双向进行的尝试非常混乱。我可以在属性上设置一个观察者并让它更新控件。但是,当我在调用控制器的“更改”事件时尝试设置属性时,会导致观察者被触发。这反过来会导致编辑器“更改”事件触发等等。欢迎来到循环之地。
我知道有办法解决这个问题 - 但我一直在尝试的所有事情都让我做不到。它看起来很老套——不像 Ember 的其他部分那样优雅。任何人都可以提出一些示例来演示此首选模式吗?
谢谢!
--
(感谢大卫 - 这是一些附加信息)
我一直在尝试绑定属性。它适用于出站更新(从编辑器控件到页面上的另一个绑定文本区域),但是当入站页面开始停滞时。
当我初始化 CKEditor 时,我引用了我安装的一个添加“更改”事件的组件:
editor.on('change', this.updateContent.bind(this));
这里是更新内容事件:
updateContent: function() {
this.set('_content', this.get('editor').getData());
},
然后,绑定属性:
content: function(key, val, previous)
{
if (arguments.length > 1)
{
this.set('_content', val);
var editor = this.get('editor');
if (editor) editor.setData(val);
}
return this.get('_content');
}.property('_content'),
【问题讨论】:
标签: javascript ember.js binding observers