aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisko Hevery2010-04-07 16:36:33 -0700
committerMisko Hevery2010-04-07 16:36:33 -0700
commita8aa5af413c068608aa28ef0d48cef1d5ad66485 (patch)
tree0f58bbc59e5a0fd3a648e52546b6fd521a844a66
parent3d0b40fee2feeb49f46063b2012977c623f1ef6f (diff)
downloadangular.js-a8aa5af413c068608aa28ef0d48cef1d5ad66485.tar.bz2
fixed filter this
-rw-r--r--angular-debug.js23
-rw-r--r--src/Parser.js11
-rw-r--r--src/widgets.js3
-rw-r--r--test/FiltersTest.js13
4 files changed, 28 insertions, 22 deletions
diff --git a/angular-debug.js b/angular-debug.js
index e23352dd..2305bded 100644
--- a/angular-debug.js
+++ b/angular-debug.js
@@ -3124,7 +3124,8 @@ function valueAccessor(scope, element) {
var validatorName = element.attr('ng-validate') || NOOP,
validator = compileValidator(validatorName),
required = element.attr('ng-required'),
- lastError;
+ lastError,
+ invalidWidgets = scope.$invalidWidgets || {markValid:noop, markInvalid:noop};
required = required || required === '';
if (!validator) throw "Validator named '" + validatorName + "' not found.";
function validate(value) {
@@ -3132,6 +3133,10 @@ function valueAccessor(scope, element) {
if (error !== lastError) {
elementError(element, NG_VALIDATION_ERROR, error);
lastError = error;
+ if (error)
+ invalidWidgets.markInvalid(element);
+ else
+ invalidWidgets.markValid(element);
}
return value;
}
@@ -3339,7 +3344,6 @@ angularWidget('NG:SWITCH', function ngSwitch(element){
}
}
});
- console.log(regex);
var match = on.match(new RegExp(regex));
if (match) {
foreach(params, function(name, index){
@@ -3438,6 +3442,21 @@ angularService("$hover", function(browser) {
}
});
}, {inject:['$browser']});
+
+angularService("$invalidWidgets", function(){
+ var invalidWidgets = [];
+ invalidWidgets.markValid = function(element){
+ var index = indexOf(invalidWidgets, element);
+ if (index != -1)
+ invalidWidgets.splice(index, 1);
+ };
+ invalidWidgets.markInvalid = function(element){
+ var index = indexOf(invalidWidgets, element);
+ if (index === -1)
+ invalidWidgets.push(element);
+ };
+ return invalidWidgets;
+});
var browserSingleton;
angularService('$browser', function browserFactory(){
if (!browserSingleton) {
diff --git a/src/Parser.js b/src/Parser.js
index 8e42f18a..dfe56cc9 100644
--- a/src/Parser.js
+++ b/src/Parser.js
@@ -372,16 +372,7 @@ Parser.prototype = {
for ( var i = 0; i < argsFn.length; i++) {
args.push(argsFn[i](self));
}
- var pipeThis = function(){
- var _this = this;
- foreach(self, function(v, k) {
- if (k.charAt(0) == '$') {
- _this[k] = v;
- }
- });
- };
- pipeThis.prototype = self.self;
- return fn.apply(new pipeThis(), args);
+ return fn.apply(self.state, args);
};
return function(){
return fnInvoke;
diff --git a/src/widgets.js b/src/widgets.js
index 376518e9..e89e8ca4 100644
--- a/src/widgets.js
+++ b/src/widgets.js
@@ -27,7 +27,7 @@ function valueAccessor(scope, element) {
required = required || required === '';
if (!validator) throw "Validator named '" + validatorName + "' not found.";
function validate(value) {
- var error = required && !trim(value) ? "Required" : validator({self:scope, scope:{get:scope.$get, set:scope.$set}}, value);
+ var error = required && !trim(value) ? "Required" : validator({state:scope, scope:{get:scope.$get, set:scope.$set}}, value);
if (error !== lastError) {
elementError(element, NG_VALIDATION_ERROR, error);
lastError = error;
@@ -242,7 +242,6 @@ angularWidget('NG:SWITCH', function ngSwitch(element){
}
}
});
- console.log(regex);
var match = on.match(new RegExp(regex));
if (match) {
foreach(params, function(name, index){
diff --git a/test/FiltersTest.js b/test/FiltersTest.js
index 15a2ebc3..fd5c9976 100644
--- a/test/FiltersTest.js
+++ b/test/FiltersTest.js
@@ -13,17 +13,14 @@ FiltersTest.prototype.XtestCurrency = function(){
assertEquals(html.hasClass('ng-format-negative'), false);
};
-FiltersTest.prototype.XtestFilterThisIsContext = function(){
- expectAsserts(2);
- var scope = new Scope();
- Scope.expressionCache = {};
- scope.set('name', 'misko');
- var context = {$element:123};
+FiltersTest.prototype.testFilterThisIsContext = function(){
+ expectAsserts(1);
+ var scope = createScope();
+ scope.name = 'misko';
angular.filter.testFn = function () {
- assertEquals('Context not equal', 123, this.$element);
assertEquals('scope not equal', 'misko', this.name);
};
- scope.eval("0|testFn", context);
+ scope.$eval("0|testFn");
delete angular.filter['testFn'];
};