You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
angular-contenteditable/angular-contenteditable.js

42 lines
1.2 KiB
JavaScript

(function() {
angular.module('contenteditable', []).directive('contenteditable', function() {
return {
require: 'ngModel',
link: function(scope, elmt, attrs, ngModel) {
var old_render;
elmt.bind('input', function(e) {
return scope.$apply(function() {
var html;
html = elmt.html();
if (attrs.stripBr && attrs.stripBr !== "false" && html === '<br>') {
html = '';
}
return ngModel.$setViewValue(html);
});
});
old_render = ngModel.$render;
return ngModel.$render = function() {
var el, el2, range, sel;
if (old_render != null) {
old_render();
}
elmt.html(ngModel.$viewValue || '');
el = elmt.get(0);
range = document.createRange();
sel = window.getSelection();
if (el.childNodes.length > 0) {
el2 = el.childNodes[el.childNodes.length - 1];
range.setStartAfter(el2);
} else {
range.setStartAfter(el);
}
range.collapse(true);
sel.removeAllRanges();
return sel.addRange(range);
};
}
};
});
}).call(this);