关于文本区/ wysiwyg的Knockout JS和iPad更新问题

时间:2016-11-05 12:54:43

标签: javascript knockout.js knockout-3.0

我有一个用淘汰赛构建的应用程序,它使用一个名为redactor的所谓的wysiwyg(不是我认为这与这个问题有关,但以防万一)

我刚遇到一个用户有iPad的问题,当他们保存一个'笔记'时,它每次丢失最后一个字母 - 没有其他人曾经遇到过这个问题。

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

我有一个自定义绑定如下

<ul class="suggestions-list">
                <li ng-repeat="suggestion in items track by $index" ng-class="{active : selectedIndex === $index}" ng-click="AssignValueAndHide($index)" data-ng-bind="suggestion"></li>
 </ul>

如何更改此设置以确保其在iPad上的行为符合预期并在最终按键时更新?或者是否有一种方法可以在更新中强制更新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 ); } } } / keyPress

1 个答案:

答案 0 :(得分:1)

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

$('#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());
    });
});