Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Commit 110ea36

Browse files
committed
Merge pull request #83 from angular-ui/feat-readonly-ng-ready
feat: readonly ng ready
2 parents 38c6bfb + 0d99e5f commit 110ea36

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,10 @@ _The ui-ace directive stores and expects the model value to be a standard javasc
147147

148148
Simple demo
149149
```html
150-
<div ui-ace readonly="true"></div>
150+
<div ui-ace readonly></div>
151151
or
152152
Check me to make Ace readonly: <input type="checkbox" ng-model="checked" ><br/>
153-
<div ui-ace readonly="{{checked}}"></div>
153+
<div ui-ace ng-readonly="checked"></div>
154154
```
155155

156156
### Ace instance direct access

src/ui-ace.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ angular.module('ui.ace', [])
248248
};
249249

250250
attrs.$observe('readonly', function (value) {
251-
acee.setReadOnly(value === 'true');
251+
acee.setReadOnly(!!value || value === '');
252252
});
253253

254254
// Value Blind

test/ace.spec.js

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ describe('uiAce', function () {
136136
.createSpy('window.ace.edit')
137137
.and.callFake(function () {
138138
_ace = aceEditFunction.apply(this, arguments);
139+
_ace.setReadOnly = jasmine.createSpy('ace.setReadOnly')
140+
.and.callThrough();
139141
return _ace;
140142
});
141143
});
@@ -177,27 +179,40 @@ describe('uiAce', function () {
177179
});
178180

179181
describe('readOnly', function () {
182+
180183
it('should read only option true', function () {
181-
$compile('<div ui-ace readonly="true">')(scope);
184+
$compile('<div ui-ace readonly>')(scope);
185+
scope.$apply();
186+
expect(_ace.setReadOnly).toHaveBeenCalledWith(true);
187+
188+
$compile('<div ui-ace ng-readonly="true">')(scope);
182189
scope.$apply();
183-
expect(_ace.getReadOnly()).toBeTruthy();
184-
$compile('<div ui-ace readonly="{{foo}}">')(scope);
190+
expect(_ace.setReadOnly).toHaveBeenCalledWith(true);
191+
192+
$compile('<div ui-ace ng-readonly="foo">')(scope);
185193
scope.$apply('foo = true');
186-
expect(_ace.getReadOnly()).toBeTruthy();
194+
expect(_ace.setReadOnly).toHaveBeenCalledWith(true);
195+
187196
});
197+
188198
it('should read only option false', function () {
189199
$compile('<div ui-ace>')(scope);
190200
scope.$apply();
191-
expect(_ace.getReadOnly()).toBeFalsy();
192-
$compile('<div ui-ace readonly="false">')(scope);
201+
expect(_ace.setReadOnly).not.toHaveBeenCalled();
202+
203+
$compile('<div ui-ace ng-readonly="false">')(scope);
193204
scope.$apply();
194-
expect(_ace.getReadOnly()).toBeFalsy();
195-
$compile('<div ui-ace readonly="{{foo}}">')(scope);
196-
expect(_ace.getReadOnly()).toBeFalsy();
197-
scope.$apply('foo = true');
198-
expect(_ace.getReadOnly()).toBeTruthy();
205+
expect(_ace.setReadOnly).toHaveBeenCalledWith(false);
206+
207+
$compile('<div ui-ace ng-readonly="foo">')(scope);
208+
scope.$apply();
209+
expect(_ace.setReadOnly).toHaveBeenCalledWith(false);
210+
211+
scope.$apply('foo = null');
212+
expect(_ace.setReadOnly).toHaveBeenCalledWith(false);
213+
199214
scope.$apply('foo = false');
200-
expect(_ace.getReadOnly()).toBeFalsy();
215+
expect(_ace.setReadOnly).toHaveBeenCalledWith(false);
201216
});
202217
});
203218

0 commit comments

Comments
 (0)