Skip to content

Commit 2f01f12

Browse files
committed
Undefined args
1 parent 5c88424 commit 2f01f12

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

src/ng/directive/input.js

+13-8
Original file line numberDiff line numberDiff line change
@@ -1763,8 +1763,11 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
17631763
* Runs each of the registered validations set on the $validators object.
17641764
*/
17651765
this.$validate = function(modelValue, viewValue) {
1766-
modelValue = modelValue || ctrl.$modelValue;
1767-
viewValue = viewValue || ctrl.$viewValue;
1766+
if(arguments.length === 0) {
1767+
modelValue = ctrl.$modelValue;
1768+
viewValue = ctrl.$viewValue;
1769+
}
1770+
17681771
forEach(ctrl.$validators, function(fn, name) {
17691772
ctrl.$setValidity(name, fn(modelValue, viewValue));
17701773
});
@@ -1803,11 +1806,12 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
18031806
modelValue = fn(modelValue);
18041807
});
18051808

1806-
if (ctrl.$modelValue !== modelValue && (!ctrl.$rawModelValue || ctrl.$rawModelValue != modelValue)) {
1809+
if (ctrl.$modelValue !== modelValue &&
1810+
(isUndefined(ctrl.$$invalidModelValue) || ctrl.$$invalidModelValue != modelValue)) {
18071811

18081812
ctrl.$validate(modelValue, viewValue);
1809-
ctrl.$modelValue = ctrl.$valid ? modelValue : undefined;
1810-
ctrl.$rawModelValue = ctrl.$valid ? undefined : modelValue;
1813+
ctrl.$modelValue = ctrl.$valid ? modelValue : undefined;
1814+
ctrl.$$invalidModelValue = ctrl.$valid ? undefined : modelValue;
18111815

18121816
ngModelSet($scope, ctrl.$modelValue);
18131817
forEach(ctrl.$viewChangeListeners, function(listener) {
@@ -1886,7 +1890,8 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
18861890
var modelValue = ngModelGet($scope);
18871891

18881892
// if scope model value and ngModel value are out of sync
1889-
if (ctrl.$modelValue !== modelValue && (!ctrl.$rawModelValue || ctrl.$rawModelValue != modelValue)) {
1893+
if (ctrl.$modelValue !== modelValue &&
1894+
(isUndefined(ctrl.$$invalidModelValue) || ctrl.$$invalidModelValue != modelValue)) {
18901895

18911896
var formatters = ctrl.$formatters,
18921897
idx = formatters.length;
@@ -1897,8 +1902,8 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
18971902
}
18981903

18991904
ctrl.$validate(modelValue, viewValue);
1900-
ctrl.$modelValue = ctrl.$valid ? modelValue : undefined;
1901-
ctrl.$rawModelValue = ctrl.$valid ? undefined : modelValue;
1905+
ctrl.$modelValue = ctrl.$valid ? modelValue : undefined;
1906+
ctrl.$$invalidModelValue = ctrl.$valid ? undefined : modelValue;
19021907

19031908
if (ctrl.$viewValue !== viewValue) {
19041909
ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue;

test/ng/directive/inputSpec.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -360,16 +360,16 @@ describe('NgModelController', function() {
360360
}
361361

362362
val('');
363-
expect(count).toBe(2);
363+
expect(count).toBe(1);
364364

365365
val(1);
366-
expect(count).toBe(3);
366+
expect(count).toBe(2);
367367

368368
val(1);
369-
expect(count).toBe(3);
369+
expect(count).toBe(2);
370370

371371
val('');
372-
expect(count).toBe(4);
372+
expect(count).toBe(3);
373373
});
374374

375375
it('should only validate to true if all validations are true', function() {

0 commit comments

Comments
 (0)