aboutsummaryrefslogtreecommitdiffstats
path: root/src/Widgets.js
diff options
context:
space:
mode:
authorMisko Hevery2010-03-29 20:25:42 -0700
committerMisko Hevery2010-03-29 20:25:42 -0700
commite55c97debaa0ef8487ece219b6eadbc147ece1f9 (patch)
tree5895b2151d639efa5fcdb09d396990d6e089c886 /src/Widgets.js
parentc655b884e268c8c9b6853d440143953f51b7e7de (diff)
downloadangular.js-e55c97debaa0ef8487ece219b6eadbc147ece1f9.tar.bz2
dissabled a lot of tests, and made the core test set pass.
Diffstat (limited to 'src/Widgets.js')
-rw-r--r--src/Widgets.js28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/Widgets.js b/src/Widgets.js
index 42b9e916..b5222ac7 100644
--- a/src/Widgets.js
+++ b/src/Widgets.js
@@ -18,7 +18,7 @@ function compileValidator(expr) {
return new Parser(expr).validator()();
}
-function valueAccessor(element) {
+function valueAccessor(scope, element) {
var validatorName = element.attr('ng-validate') || NOOP,
validator = compileValidator(validatorName),
required = element.attr('ng-required'),
@@ -26,7 +26,7 @@ function valueAccessor(element) {
required = required || required == '';
if (!validator) throw "Validator named '" + validatorName + "' not found.";
function validate(value) {
- var error = required && !trim(value) ? "Required" : validator.call(this, value);
+ var error = required && !trim(value) ? "Required" : validator({self:scope, scope:{get:scope.$get, set:scope.$set}}, value);
if (error !== lastError) {
if (error) {
element.addClass(NG_VALIDATION_ERROR);
@@ -45,23 +45,31 @@ function valueAccessor(element) {
};
}
-function checkedAccessor(element) {
+function checkedAccessor(scope, element) {
var domElement = element[0];
return {
- get: function(){ return !!domElement.checked; },
- set: function(value){ domElement.checked = !!value; }
+ get: function(){
+ return !!domElement.checked;
+ },
+ set: function(value){
+ domElement.checked = !!value;
+ }
};
}
-function radioAccessor(element) {
+function radioAccessor(scope, element) {
var domElement = element[0];
return {
- get: function(){ return domElement.checked ? domElement.value : null; },
- set: function(value){ domElement.checked = value == domElement.value; }
+ get: function(){
+ return domElement.checked ? domElement.value : null;
+ },
+ set: function(value){
+ domElement.checked = value == domElement.value;
+ }
};
}
-function optionsAccessor(element) {
+function optionsAccessor(scope, element) {
var options = element[0].options;
return {
get: function(){
@@ -107,7 +115,7 @@ function inputWidget(events, modelAccessor, viewAccessor, initValue) {
return function(element) {
var scope = this,
model = modelAccessor(scope, element),
- view = viewAccessor(element),
+ view = viewAccessor(scope, element),
action = element.attr('ng-action') || '',
value = view.get() || copy(initValue);
if (isDefined(value)) model.set(value);