diff options
| author | Misko Hevery | 2010-04-07 16:36:33 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-04-07 16:36:33 -0700 |
| commit | a8aa5af413c068608aa28ef0d48cef1d5ad66485 (patch) | |
| tree | 0f58bbc59e5a0fd3a648e52546b6fd521a844a66 | |
| parent | 3d0b40fee2feeb49f46063b2012977c623f1ef6f (diff) | |
| download | angular.js-a8aa5af413c068608aa28ef0d48cef1d5ad66485.tar.bz2 | |
fixed filter this
| -rw-r--r-- | angular-debug.js | 23 | ||||
| -rw-r--r-- | src/Parser.js | 11 | ||||
| -rw-r--r-- | src/widgets.js | 3 | ||||
| -rw-r--r-- | test/FiltersTest.js | 13 |
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']; }; |
