Ember.js - 在不触发本地观察器的情况下更新绑定属性

时间:2014-06-07 00:04:08

标签: javascript ember.js binding observers

我创建了一个包装编辑器(CKEditor)的ember组件。编辑器的值通过setData()和getData()访问器进行更新。我想在我的ember控件中实现双向绑定,以便编辑组件"内容"现场流入和流出控制。

到目前为止,我能够轻松地实现这一目标 - 但我试图双向化是非常混乱的。我可以在属性上设置一个观察者并让它更新控件。但是,当我尝试在控制器改变时设置属性"调用event,它会导致观察者被触发。这反过来又导致编辑改变了#34;要触发的事件等等。欢迎来到Loopy Land。

我知道有办法解决这个问题 - 但是我所尝试的所有事情都让我变得简短。它似乎很丑陋 - 不像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'),

1 个答案:

答案 0 :(得分:0)

听起来您正在尝试从控件更新计算属性。如果你有一个依赖于firstName和lastName的计算属性fullName,那么如果你的UI更新依赖项而不是计算属性,它会变得混乱。

但是如果你真的需要更新计算结果,那么看看"设置计算属性" Ember文档(http://emberjs.com/guides/object-model/computed-properties/)中的部分,它向您展示如何使用计算属性的输入来更新其依赖项。

不确定这是否符合您的要求,但如果没有,请提交一个循环内容以及需要更新的内容。

相关问题