Я имею строку, содержащую много редактируемой области, пожалуйста, рассмотрите эту строкуMutiple Содержание редактируемые связывания внутри строки с помощью нокаута
var str = "Regular ... are patterns used to match character .... in strings. In ..., regular expressions are also objects."
редактируемые регионы содержит («...»), я хочу сделать что места редактируемые. означает, что я хочу вставлять редактируемый контент внутри этой строки. Я хотел бы использовать нокаут для этой цели. Я рассказал о niemeyer о содержании, редактируемом, используя нокаут. может ли кто-нибудь предложить мне лучший способ достичь этого. это мой код here
ko.bindingHandlers.editableContent = {
init: function(element, valueAccessor, allBindingsAccessor) {
$(element).css({ "background-color": "#ff77ee", "margin-left": "-2px", "letter-spacing": "0.05"});
ko.utils.registerEventHandler(element, "keyup", function() {
var modelValue = valueAccessor();
var elementValue = element.innerHTML;
if (ko.isWriteableObservable(modelValue)) {
modelValue(elementValue);
}
else { //handle non-observable one-way binding
var allBindings = allBindingsAccessor();
if (allBindings['_ko_property_writers'] && allBindings['_ko_property_writers'].editableContent) allBindings['_ko_property_writers'].editableContent(elementValue);
}
})
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()) || "";
element.innerHTML = value;
}
};
ko.bindingHandlers.myBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var div = document.createElement("div");
var fulltext = valueAccessor();
element.appendChild(div);
div.innerHTML = fulltext().replace(/\.\.\./g, "<span data-bind = 'editableContent : editedText' contenteditable='true'></span>");
ko.applyBindings(viewModel,div);
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
}
};
$(document).ready(function() {
var viewModel = function() {
var self = this;
self.fullText = ko.observable('Regular ... are patterns used to match character .... in strings. In ..., regular expressions are also objects.');
self.editedText = ko.observable('...');
}
ko.applyBindings(new viewModel());
});
Thank you Ryan.! Он отлично работал. Я попытался разбить текст и динамически вставить наблюдаемое. Это не сработало. после того, как я попробовал свой код, он работал в обаянии. Чтобы отслеживать изменения редактируемого контента, я попытаюсь написать код в соответствии с методом обновления. – Aroor
@Ryan, чтобы получить значение из блока редактирования контента, нужно ли мне определять, что в модели основного вида наблюдаемо? Я пытался получить значение из блока, который он не работает. помогите мне – Aroor
Мы говорим о результирующем значении всех предметов? Эта часть должна обновляться (в привязке, которую я перечислял), пока исходное значение является наблюдаемым. –