From 7ba9e4abcba9fab0c41528d007dc591c9c040751 Mon Sep 17 00:00:00 2001 From: Dmitri Akatov Date: Mon, 5 Aug 2013 15:23:40 -0700 Subject: [PATCH] 0.3.5 - don't do anything for contenteditable without an ngModel --- angular-contenteditable.js | 21 ++++++++++++++++----- bower.json | 2 +- package.json | 2 +- test/fixtures/simple.html | 23 +++++++++++++++-------- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/angular-contenteditable.js b/angular-contenteditable.js index 8ee2e28..881533a 100644 --- a/angular-contenteditable.js +++ b/angular-contenteditable.js @@ -1,8 +1,19 @@ +/** + * @see http://docs.angularjs.org/guide/concepts + * @see http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController + * @see https://github.com/angular/angular.js/issues/528#issuecomment-7573166 + */ + angular.module('contenteditable', []) .directive('contenteditable', ['$timeout', function($timeout) { return { - require: 'ngModel', + restrict: 'A', + require: '?ngModel', link: function($scope, $element, attrs, ngModel) { - var old_render + // don't do anything unless this is actually bound to a model + if (!ngModel) { + return + } + // view -> model $element.bind('input', function(e) { $scope.$apply(function() { @@ -35,11 +46,11 @@ angular.module('contenteditable', []) }) // model -> view - old_render = ngModel.$render + var oldRender = ngModel.$render ngModel.$render = function() { var el, el2, range, sel - if (!!old_render) { - old_render() + if (!!oldRender) { + oldRender() } $element.html(ngModel.$viewValue || '') el = $element.get(0) diff --git a/bower.json b/bower.json index 03c899c..34842df 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "angular-contenteditable", - "version": "0.3.4", + "version": "0.3.5", "main": "angular-contenteditable.js", "ignore": [ ".*", diff --git a/package.json b/package.json index 65a16e2..d5fcfe3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-contenteditable", - "version": "0.3.3", + "version": "0.3.5", "description": "angular extensions", "main": "angular-contenteditable.js", "directories": { diff --git a/test/fixtures/simple.html b/test/fixtures/simple.html index 2395675..1a90794 100644 --- a/test/fixtures/simple.html +++ b/test/fixtures/simple.html @@ -8,11 +8,9 @@ @@ -26,9 +24,18 @@ angular.bootstrap(document, ['simple'])
{{ model }}
- -
- The other controller +
+
Edit me - I don't affect anything
+
+
+
+
+
+
+
+
+
+