Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 36e6de1

Browse files
shahatatbosch
authored andcommitted
fix(input): check scope.$$phase only on $rootScope
1 parent 9bf964f commit 36e6de1

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

src/ng/directive/input.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
522522
// a row.
523523
var revalidate = validity && ctrl.$$hasNativeValidators;
524524
if (ctrl.$viewValue !== value || (value === '' && revalidate)) {
525-
if (scope.$$phase) {
525+
if (scope.$root.$$phase) {
526526
ctrl.$setViewValue(value);
527527
} else {
528528
scope.$apply(function() {

test/ng/directive/inputSpec.js

+21-10
Original file line numberDiff line numberDiff line change
@@ -580,19 +580,30 @@ describe('input', function() {
580580
});
581581

582582
if (!_jqLiteMode) {
583-
it('should not cause the double $digest when triggering an event using jQuery', function() {
584-
$sniffer.hasEvent = function(eventName) {
585-
return eventName !== 'input';
586-
};
583+
describe('double $digest when triggering an event using jQuery', function() {
584+
function run() {
585+
$sniffer.hasEvent = function(eventName) {
586+
return eventName !== 'input';
587+
};
588+
589+
compileInput('<input type="text" ng-model="name" name="alias" ng-change="change()" />');
590+
591+
scope.field = 'fake field';
592+
scope.$watch('field', function() {
593+
// We need to use _originalTrigger since trigger is modified by Angular Scenario.
594+
inputElm._originalTrigger('change');
595+
});
596+
scope.$apply();
597+
}
587598

588-
compileInput('<input type="text" ng-model="name" name="alias" ng-change="change()" />');
599+
it('should not cause the double $digest with non isolate scopes', function() {
600+
run();
601+
});
589602

590-
scope.field = 'fake field';
591-
scope.$watch('field', function() {
592-
// We need to use _originalTrigger since trigger is modified by Angular Scenario.
593-
inputElm._originalTrigger('change');
603+
it('should not cause the double $digest with isolate scopes', function() {
604+
scope = scope.$new(true);
605+
run();
594606
});
595-
scope.$apply();
596607
});
597608
}
598609
});

0 commit comments

Comments
 (0)