diff --git a/README.md b/README.md index c6fb8ae..b2b8c9d 100644 --- a/README.md +++ b/README.md @@ -147,10 +147,10 @@ _The ui-ace directive stores and expects the model value to be a standard javasc Simple demo ```html -
+
or Check me to make Ace readonly:
-
+
``` ### Ace instance direct access diff --git a/src/ui-ace.js b/src/ui-ace.js index 169145a..43ae7f7 100644 --- a/src/ui-ace.js +++ b/src/ui-ace.js @@ -248,7 +248,7 @@ angular.module('ui.ace', []) }; attrs.$observe('readonly', function (value) { - acee.setReadOnly(value === 'true'); + acee.setReadOnly(!!value || value === ''); }); // Value Blind diff --git a/test/ace.spec.js b/test/ace.spec.js index 405bb9a..af7cdc4 100644 --- a/test/ace.spec.js +++ b/test/ace.spec.js @@ -136,6 +136,8 @@ describe('uiAce', function () { .createSpy('window.ace.edit') .and.callFake(function () { _ace = aceEditFunction.apply(this, arguments); + _ace.setReadOnly = jasmine.createSpy('ace.setReadOnly') + .and.callThrough(); return _ace; }); }); @@ -177,27 +179,40 @@ describe('uiAce', function () { }); describe('readOnly', function () { + it('should read only option true', function () { - $compile('
')(scope); + $compile('
')(scope); + scope.$apply(); + expect(_ace.setReadOnly).toHaveBeenCalledWith(true); + + $compile('
')(scope); scope.$apply(); - expect(_ace.getReadOnly()).toBeTruthy(); - $compile('
')(scope); + expect(_ace.setReadOnly).toHaveBeenCalledWith(true); + + $compile('
')(scope); scope.$apply('foo = true'); - expect(_ace.getReadOnly()).toBeTruthy(); + expect(_ace.setReadOnly).toHaveBeenCalledWith(true); + }); + it('should read only option false', function () { $compile('
')(scope); scope.$apply(); - expect(_ace.getReadOnly()).toBeFalsy(); - $compile('
')(scope); + expect(_ace.setReadOnly).not.toHaveBeenCalled(); + + $compile('
')(scope); scope.$apply(); - expect(_ace.getReadOnly()).toBeFalsy(); - $compile('
')(scope); - expect(_ace.getReadOnly()).toBeFalsy(); - scope.$apply('foo = true'); - expect(_ace.getReadOnly()).toBeTruthy(); + expect(_ace.setReadOnly).toHaveBeenCalledWith(false); + + $compile('
')(scope); + scope.$apply(); + expect(_ace.setReadOnly).toHaveBeenCalledWith(false); + + scope.$apply('foo = null'); + expect(_ace.setReadOnly).toHaveBeenCalledWith(false); + scope.$apply('foo = false'); - expect(_ace.getReadOnly()).toBeFalsy(); + expect(_ace.setReadOnly).toHaveBeenCalledWith(false); }); });