소켓 위치 바인딩 및 소켓 위치에 문자열 삽입
7736 단어 jQueryJavaScriptknockoutjs
그럼 이번에 소개해드리는 건 "Caret binding"입니다.
caret binding
DEMO:JSFIDDLE
caret-binding
ko.bindingHandlers.caret = {
init: function(element, valueAccessor, allBindings) {
var $elm = $(element),
suspend = true,
value_writer = allBindings()._ko_property_writers.value;
function updateModel() {
var pos = $elm.caret();
var modelValue = valueAccessor();
suspend = true;
if (ko.isObservable(modelValue)) modelValue(pos);
else valueAccessor(pos);
}
$elm.bind('keydown click focus', updateModel);
ko.computed(function() {
var modelValue = ko.unwrap(valueAccessor());
if (suspend) {
suspend = false;
if (typeof modelValue == 'number') return;
}
var st = element.scrollTop;
$elm.caret(modelValue);
element.scrollTop = st;
if (typeof modelValue == 'string') {
updateModel();
if (value_writer) {
value_writer($elm.val());
}
}
});
}
};
의존성: jQuery, jquery.caret사용 방법
바인딩
<input type="text">
또는 <textarea>
을 사용합니다.<textarea data-bind="value: body, caret: bodyCaret"></textarea>
function ViewModel() {
var self = this;
self.body = ko.observable("");
self.bodyCaret = ko.observable();
self.insertFoo = function() {
self.bodyCaret('Foo');
};
}
바인딩bodyCaret
은 항상 문자의 삽입 위치를 저장하지만 ViewModel 측면에서 문자열을 작성하여 삽입 위치에 삽입할 수 있습니다.또 그대로 두면 왜 굴러가는 위치가 끝까지 날아갈지 몰라 수정하기도 했다.
사과하다
다른 제목을 생각했는데 어떻게 생각을 통일하지 못하고 포기하고 상당히 작은 기사로 바뀌었다.
미안합니다.
하지만 개인적으로'이런 사용자 정의 귀속을 썼어요!'이런 최소한의 보도가 늘어나기를 바란다.반복할 수 있는 견해를 공유합시다!
Reference
이 문제에 관하여(소켓 위치 바인딩 및 소켓 위치에 문자열 삽입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sukobuto/items/30232a833a0f06e421d8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)