繁体   English   中英

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

[英]Ember.js - Updating a Bound Property without Triggering Local Observer

我创建了一个包装编辑器(CKEditor)的余烬组件。 编辑器的值通过setData()和getData()访问器进行更新。 我想在ember控件中实现双向绑定,以便对组件的“ content”字段的编辑流入和流出控件。

到目前为止,我能够轻松实现它的一种方式-但我尝试双向迁移的过程非常混乱。 我可以在属性上设置观察者,并让它更新控件。 但是,当我尝试在调用控制器的“更改”事件时设置属性时,它将导致触发观察者。 这进而导致编辑器的“ change”事件触发,依此类推。 欢迎来到Loopy Land。

我知道有很多方法可以解决这个问题-但是我一直在尝试的所有事情都让我无法胜任。 似乎很老套-不像其他Ember那样优雅。 任何人都可以提出一些示例来说明这种情况的首选模式吗?

谢谢!

-

(感谢David-这是一些附加信息)

我一直在尝试绑定属性的东西。 它非常适合出站更新(从编辑器控件到页面上另一个绑定的textarea),但是入站时页面开始陷入困境。

初始化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'),

听起来您正在尝试从控件中更新计算的属性。 如果您具有取决于firstName和lastName的fullName的计算属性,则如果您的UI更新了依赖关系而不是计算的属性,则会引起混淆。

但是,如果您确实需要更新计算结果,请查看Ember文档( http://emberjs.com/guides/object-model/computed-properties/ )中的“设置计算属性”部分,它向您展示了如何您可以使用计算属性的输入来更新其依赖性。

不知道这是否满足您的要求,但如果不能满足您的要求,请提交一段代码,介绍正在循环的内容和需要更新的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM