aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMisko Hevery2010-03-24 16:47:11 -0700
committerMisko Hevery2010-03-24 16:47:11 -0700
commitf29f6a47c4d81c5b8e365a3dae307159f1b12968 (patch)
tree0f0c98e1a5effc60fc61c7908b4e6870c729c290 /src
parent0c42eb9909d554807549cd3394e0ea0c715cc2d1 (diff)
downloadangular.js-f29f6a47c4d81c5b8e365a3dae307159f1b12968.tar.bz2
fixed .value vs attr(value) access
Diffstat (limited to 'src')
-rw-r--r--src/Angular.js1
-rw-r--r--src/jqLite.js7
-rw-r--r--src/widgets2.js27
3 files changed, 24 insertions, 11 deletions
diff --git a/src/Angular.js b/src/Angular.js
index b76926b9..dc530921 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -44,7 +44,6 @@ function extensionList(angular, name) {
}
var consoleNode, msie,
- VALUE = 'value',
NOOP = 'noop',
jQuery = window['jQuery'] || window['$'], // weirdness to make IE happy
slice = Array.prototype.slice,
diff --git a/src/jqLite.js b/src/jqLite.js
index 2ac3f6c9..2132bfc1 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -179,6 +179,13 @@ JQLite.prototype = {
return this[0].textContent;
},
+ val: function(value) {
+ if (isDefined(value)) {
+ this[0].value = value;
+ }
+ return this[0].value;
+ },
+
html: function(value) {
if (isDefined(value)) {
this[0].innerHTML = value;
diff --git a/src/widgets2.js b/src/widgets2.js
index cee0e49e..5425b5a4 100644
--- a/src/widgets2.js
+++ b/src/widgets2.js
@@ -36,23 +36,22 @@ function domAccessor(element) {
return value;
}
return {
- get: function(){
- return validate(element.attr(VALUE));
- },
- set: function(value){
- element.attr(VALUE, validate(value));
- }
+ get: function(){ return validate(element.val()); },
+ set: function(value){ element.val(validate(value)); }
};
}
var NG_ERROR = 'ng-error',
NG_VALIDATION_ERROR = 'ng-validation-error',
+ TEXT_META = ['', 'keyup change'],
INPUT_META = {
- 'text': ["", 'keyup change']
-};
+ 'text': TEXT_META,
+ 'textarea': TEXT_META,
+ 'hidden': TEXT_META,
+ 'password': TEXT_META
+ };
-angularWidget('INPUT', function input(element){
- var meta = INPUT_META[lowercase(element.attr('type'))];
+function inputWidget(meta) {
return meta ? function(element) {
var scope = scopeAccessor(this, element),
dom = domAccessor(element);
@@ -62,6 +61,14 @@ angularWidget('INPUT', function input(element){
});
this.$watch(scope.get, dom.set);
} : 0;
+}
+
+angularWidget('INPUT', function input(element){
+ return inputWidget(INPUT_META[lowercase(element[0].type)]);
+});
+
+angularWidget('TEXTAREA', function(){
+ return inputWidget(INPUT_META['text']);
});