를 사용하여 문자열 내에서 바인딩,하여 여러개의 콘텐츠 편집 녹아웃
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());
});
감사합니다. Ryan. 그것은 완벽하게 작동했습니다. 내가 텍스트를 분할하고 관찰 할 수있는 동적으로 삽입하려고했습니다. 작동하지 않았습니다. 내가 당신의 코드를 시험해 본 후에 그것은 매력을 발휘했다. 편집 가능한 블록 변경 내용을 추적하기 위해 update 메소드 아래에 코드를 작성하려고합니다. – Aroor
@ Ryan 콘텐츠 편집 가능한 블록에서 가치를 얻으려면 주 뷰 모델에서 관찰 가능하다고 정의해야합니까? 나는 그것이 작동하지 않는 블록에서 가치를 얻으려고했다. 제발 도와주세요 – Aroor
모든 조각의 결과 값에 대해 이야기하고 있습니까? 원래 값이 관측 가능하다면 그 부분은 (나열된 바인딩에서) 업데이트되어야합니다. –