我有一个使用 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> - "]
]
});
}
},
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/