簡體   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