aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaitlin Potter2013-12-16 13:06:16 -0500
committerCaitlin Potter2014-02-12 20:28:13 -0500
commit2b7302713674506fdbcdc396c38f18dcb90dee8c (patch)
treee3a2ed5ba275ca01fe926a429a352c2c9002e53e
parent1079105443145a85a47496591b5d249a223710f2 (diff)
downloadangular.js-2b7302713674506fdbcdc396c38f18dcb90dee8c.tar.bz2
fix(input): setViewValue on compositionend
Because of a4e6d962, model is not updated on input/change between the compositionstart and compositionend events. Unfortunately, the compositionend event does not always happen prior to an input/change event. This changeset calls the listener function to update the model after a compositionend event is received. Closes #6058 Closes #5433
-rw-r--r--src/ng/directive/input.js1
-rw-r--r--test/ng/directive/inputSpec.js11
2 files changed, 12 insertions, 0 deletions
diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js
index 3c09c084..09e07d36 100644
--- a/src/ng/directive/input.js
+++ b/src/ng/directive/input.js
@@ -447,6 +447,7 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
element.on('compositionend', function() {
composing = false;
+ listener();
});
}
diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js
index 668fa0b5..b9f737ac 100644
--- a/test/ng/directive/inputSpec.js
+++ b/test/ng/directive/inputSpec.js
@@ -509,6 +509,17 @@ describe('input', function() {
});
}
+ it('should update the model on "compositionend"', function() {
+ compileInput('<input type="text" ng-model="name" name="alias" />');
+ if (!(msie < 9)) {
+ browserTrigger(inputElm, 'compositionstart');
+ changeInputValueTo('caitp');
+ expect(scope.name).toBeUndefined();
+ browserTrigger(inputElm, 'compositionend');
+ expect(scope.name).toEqual('caitp');
+ }
+ });
+
describe('"change" event', function() {
function assertBrowserSupportsChangeEvent(inputEventSupported) {
// Force browser to report a lack of an 'input' event