diff --git a/angular-contenteditable.js b/angular-contenteditable.js
index 49b59ee..2e97a4f 100644
--- a/angular-contenteditable.js
+++ b/angular-contenteditable.js
@@ -21,6 +21,7 @@ angular.module('contenteditable', [])
'noLineBreaks',
'selectNonEditable',
'moveCaretToEndOnChange',
+ 'unformattedText'
], function(opt) {
var o = attrs[opt]
opts[opt] = o && o !== 'false'
@@ -30,7 +31,7 @@ angular.module('contenteditable', [])
element.bind('input', function(e) {
scope.$apply(function() {
var html, html2, rerender
- html = element.html()
+ html = opts.unformattedText ? element[0].innerText : element.html()
rerender = false
if (opts.stripBr) {
html = html.replace(/
$/, '')
@@ -64,6 +65,11 @@ angular.module('contenteditable', [])
if (!!oldRender) {
oldRender()
}
+
+ if (opts.unformattedText) {
+ ngModel.$viewValue = ngModel.$viewValue.replace(new RegExp('\n','g'), '
');
+ }
+
element.html(ngModel.$viewValue || '')
if (opts.moveCaretToEndOnChange) {
el = element[0]
diff --git a/test/e2e/scenarios.coffee b/test/e2e/scenarios.coffee
index f6d267c..3518810 100644
--- a/test/e2e/scenarios.coffee
+++ b/test/e2e/scenarios.coffee
@@ -22,3 +22,12 @@ describe 'module contenteditable', ->
expect(element('#input').html()).toBe 'a red b'
expect(element('#input span').html()).toBe 'red'
expect(element('#output').html()).toBe 'a <span style="color:red">red</span> b'
+
+ it 'setting the model with some pure text should dispaly
instead of newlines \\n', ->
+ input('unformatted').enter('#h1\n\n##h2\n###h3');
+ expect(element('#output-unformatted').html()).toBe '#h1
##h2
###h3'
+
+ it 'putting some unformatted text with
s in the html should replace them with newlines', ->
+
+ element('#output-unformatted').html('#h1
##h2
###h3');
+ expect(input('unformatted').val()).toBe('#h1\n\n##h2\n###h3');
diff --git a/test/fixtures/simple.html b/test/fixtures/simple.html
index 1b3d0bf..277314c 100644
--- a/test/fixtures/simple.html
+++ b/test/fixtures/simple.html
@@ -34,6 +34,11 @@