aboutsummaryrefslogtreecommitdiffstats
path: root/src/ng
diff options
context:
space:
mode:
authorCaitlin Potter2014-02-11 09:57:04 -0500
committerCaitlin Potter2014-02-11 17:08:41 -0500
commitb4eed8ad94ce9719540462c1ee969dfd3c6b2355 (patch)
tree83e7074344a407168b2fa622d49f060ffe956078 /src/ng
parent08793a690abe3eda40deae10f8a0a117779bdbd9 (diff)
downloadangular.js-b4eed8ad94ce9719540462c1ee969dfd3c6b2355.tar.bz2
feat(filterFilter): support deeply nested predicate objects
Due to 339a165, it became impossible to filter nested properties of an object using the filterFilter. A proposed solution to this was to enable the use of nested predicate objects. This change enables the use of these nested predicate objects. Example: ```html <div ng-repeat="it in items | filter:{ address: { country: 'Canuckistan'}}"></div> ``` Or ```js $filter('filter')(items, { address: { country: 'Canuckistan' } }); ``` Closes #6215 Related to #6009
Diffstat (limited to 'src/ng')
-rw-r--r--src/ng/filter/filter.js9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ng/filter/filter.js b/src/ng/filter/filter.js
index eabe84a7..2bb0d174 100644
--- a/src/ng/filter/filter.js
+++ b/src/ng/filter/filter.js
@@ -136,6 +136,15 @@ function filterFilter() {
};
} else {
comparator = function(obj, text) {
+ if (obj && text && typeof obj === 'object' && typeof text === 'object') {
+ for (var objKey in obj) {
+ if (objKey.charAt(0) !== '$' && hasOwnProperty.call(obj, objKey) &&
+ comparator(obj[objKey], text[objKey])) {
+ return true;
+ }
+ }
+ return false;
+ }
text = (''+text).toLowerCase();
return (''+obj).toLowerCase().indexOf(text) > -1;
};