diff options
| author | Igor Minar | 2011-09-02 22:59:59 -0700 |
|---|---|---|
| committer | Igor Minar | 2011-09-07 23:37:37 -0700 |
| commit | 06534413d3a33193853c39d0f9081709aac3908f (patch) | |
| tree | def8ddd93eb71175360bf4dab4593be9e2cd489d | |
| parent | e54909f5efa37cd4013d7f21a77817ea459cde64 (diff) | |
| download | angular.js-06534413d3a33193853c39d0f9081709aac3908f.tar.bz2 | |
fix(ng:options): ng:change should be called after the new val is set
Closes #547
| -rw-r--r-- | src/widgets.js | 2 | ||||
| -rw-r--r-- | test/widgetsSpec.js | 16 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/widgets.js b/src/widgets.js index 42e608dd..254331c0 100644 --- a/src/widgets.js +++ b/src/widgets.js @@ -762,8 +762,8 @@ angularWidget('select', function(element){ } } if (isDefined(value) && model.get() !== value) { - onChange(scope); model.set(value); + onChange(scope); } scope.$root.$apply(); } finally { diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js index 235f5492..42220201 100644 --- a/test/widgetsSpec.js +++ b/test/widgetsSpec.js @@ -900,22 +900,28 @@ describe("widget", function(){ createSelect({ name:'selected', 'ng:options':'value for value in values', - 'ng:change':'count = count + 1' + 'ng:change':'log = log + selected.name' }); scope.values = [{name:'A'}, {name:'B'}]; scope.selected = scope.values[0]; - scope.count = 0; + scope.log = ''; scope.$digest(); - expect(scope.count).toEqual(0); + expect(scope.log).toEqual(''); select.val('1'); browserTrigger(select, 'change'); - expect(scope.count).toEqual(1); + expect(scope.log).toEqual('B'); expect(scope.selected).toEqual(scope.values[1]); + // ignore change event when the model doesn't change browserTrigger(select, 'change'); - expect(scope.count).toEqual(1); + expect(scope.log).toEqual('B'); expect(scope.selected).toEqual(scope.values[1]); + + select.val('0'); + browserTrigger(select, 'change'); + expect(scope.log).toEqual('BA'); + expect(scope.selected).toEqual(scope.values[0]); }); it('should update model on change through expression', function(){ |
