diff --git a/angular-contenteditable.js b/angular-contenteditable.js index f79c352..64cfc64 100644 --- a/angular-contenteditable.js +++ b/angular-contenteditable.js @@ -2,20 +2,25 @@ angular.module('contenteditable', []).directive('contenteditable', function() { return { require: 'ngModel', - link: function(scope, elmt, attrs, ctrl) { + link: function(scope, elmt, attrs, ngModel) { var old_render; - old_render = ctrl.$render; elmt.bind('input', function(e) { return scope.$apply(function() { - return ctrl.$setViewValue(elmt.html()); + var html; + html = elmt.html(); + if (attrs.stripBr && attrs.stripBr !== "false" && html === '
') { + html = ''; + } + return ngModel.$setViewValue(html); }); }); - return ctrl.$render = function() { + old_render = ngModel.$render; + return ngModel.$render = function() { var el, el2, range, sel; - if (old_render !== null) { + if (old_render != null) { old_render(); } - elmt.html(ctrl.$viewValue); + elmt.html(ngModel.$viewValue || ''); el = elmt.get(0); range = document.createRange(); sel = window.getSelection(); diff --git a/bower.json b/bower.json index e117ff4..0db0a92 100644 --- a/bower.json +++ b/bower.json @@ -1,5 +1,5 @@ { "name": "angular-contenteditable" -, "version": "0.0.1" +, "version": "0.1.0" , "main": "angular-contenteditable.js" , "ignore": [ ".*" diff --git a/package.json b/package.json index 67ad540..cd6f48f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-contenteditable", - "version": "0.0.1", + "version": "0.1.0", "description": "angular extensions", "main": "angular-contenteditable.js", "directories": { diff --git a/src/contenteditable.coffee b/src/contenteditable.coffee index 6cf67c5..59687a1 100644 --- a/src/contenteditable.coffee +++ b/src/contenteditable.coffee @@ -1,18 +1,19 @@ angular.module('contenteditable', []) .directive('contenteditable', -> require: 'ngModel', - link: (scope, elmt, attrs, ctrl) -> - old_render = ctrl.$render # save for later - + link: (scope, elmt, attrs, ngModel) -> # view -> model elmt.bind 'input', (e) -> scope.$apply -> - ctrl.$setViewValue elmt.html() + html = elmt.html() + html = '' if attrs.stripBr && attrs.stripBr != "false" && html == '
' + ngModel.$setViewValue(html) # model -> view - ctrl.$render = -> - old_render() if old_render != null # old_render? leads to linted js - elmt.html ctrl.$viewValue + old_render = ngModel.$render # save for later + ngModel.$render = -> + old_render() if old_render? + elmt.html(ngModel.$viewValue || '') # move cursor to the end el = elmt.get(0) range = document.createRange() diff --git a/test/fixtures/strip-br.html b/test/fixtures/strip-br.html new file mode 100644 index 0000000..2330604 --- /dev/null +++ b/test/fixtures/strip-br.html @@ -0,0 +1,33 @@ + + + + Simple + + + + + + + +
+ +
+ something +
+
+
+ +
{{ model }}
+
+
+ +