javascript - 文本区域/wysiwyg 上的 Knockout JS 和 iPad 更新问题

标签 javascript knockout.js knockout-3.0

我有一个使用 knockout 构建的应用程序,它使用一个名为 redactor 的所见即所得(我认为这与这个问题无关,但以防万一)

我刚刚遇到一个问题,用户拥有 iPad,当他们保存“笔记”时,每次都会丢失最后一个字母 - 没有其他人遇到过此问题。

很明显,这是由于底层文本区域在最后一次按键时没有更新,但我不知道如何解决这个问题。

我有一个自定义绑定(bind),如下

ko.bindingHandlers.redactor = {

    init: function(element, valueAccessor) {

        var value = valueAccessor();

        if (ko.isObservable(value)) {
        $(element).redactor({
            changeCallback: value,
            fileUpload: 'url',
            fileManagerJson: site_URL + 'files/files.json',
            plugins: ['filemanager', 'clips', 'textexpander', 'bufferbuttons'],
            textexpander: [
                ["##s", "<strong>(S)</strong> -&nbsp;"]
            ]
        });
    }
    },
    update: function(element, valueAccessor) {

        var value = ko.utils.unwrapObservable(valueAccessor()) || '';

        if (value !== $(element).redactor('core.getTextarea').val()) {
            $(element).redactor('code.set', value );
        }
    }
}

我如何更改此设置以确保它在 iPad 上按预期运行并在最终按键时更新?或者有没有一种方法可以在更新中简单地强制更新 keyPress/keyDown

最佳答案

文档中的代码示例检索小部件值,如下所示:

$('#redactor').redactor({
    callbacks: {
        change: function()
        {
            console.log(this.code.get());
        }
    }   
});

换句话说,它们在回调正文中调用 this.code.get()

另一方面,你的设置...

$(element).redactor({
    changeCallback: value
});

它隐式使用回调的第一个参数作为值。

如果您使用文档建议的相同方法,会有什么不同吗?

$(element).redactor({
    changeCallback: function () {
        value(this.code.get());
    });
});

关于javascript - 文本区域/wysiwyg 上的 Knockout JS 和 iPad 更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40438483/

相关文章:

javascript - 如何在 Mithril.js 中叠加弹出 View ?

javascript - Fullcalendar 在 dayClick() 上返回错误的日期

javascript - 将选择的选项值从一种表单复制到另一种表单

mvvm - 是否可以在 'click' 绑定(bind)中设置 observable?

javascript - knockout.js、knockout-sortable 和默认文本

javascript - knockout 改变一个变量的值

javascript - 使用 CSS ":before"将内联 block DIV 居中会破坏文本的垂直和水平居中

javascript - Knockout - 通过设置对象的属性来更改对象的 'subclass'

javascript - 如果通过数据绑定(bind)动态设置其 id,则 mdl-menu 列表不会打开

javascript - knockout.js subscribe 在第一组没有被调用