diff options
| author | Elliott Sprehn | 2010-11-08 23:26:36 -0800 | 
|---|---|---|
| committer | Misko Hevery | 2010-11-09 13:39:12 -0800 | 
| commit | 257e97a65f7dd794faa5d8c0d72bbd5a894cb471 (patch) | |
| tree | 8fa51fbe70c657985e03fdb1762832c3ff913679 /src/scenario/dsl.js | |
| parent | c048f0d8e8385e96e9fff0b4ff733cecfa726d93 (diff) | |
| download | angular.js-257e97a65f7dd794faa5d8c0d72bbd5a894cb471.tar.bz2 | |
Support substring matching of bindings with repeater(). Closes #123
Diffstat (limited to 'src/scenario/dsl.js')
| -rw-r--r-- | src/scenario/dsl.js | 43 | 
1 files changed, 7 insertions, 36 deletions
diff --git a/src/scenario/dsl.js b/src/scenario/dsl.js index 3fb84596..2ba61a52 100644 --- a/src/scenario/dsl.js +++ b/src/scenario/dsl.js @@ -152,30 +152,16 @@ angular.scenario.dsl('using', function() {  /**   * Usage: - *    binding(name) returns the value of a binding + *    binding(name) returns the value of the first matching binding   */  angular.scenario.dsl('binding', function() { -  function contains(text, value) { -    return value instanceof RegExp ? -             value.test(text) : -             text && text.indexOf(value) >= 0; -  }    return function(name) {      return this.addFutureAction("select binding '" + name + "'", function($window, $document, done) { -      var elements = $document.elements('.ng-binding'); -      for ( var i = 0; i < elements.length; i++) { -        var element = new elements.init(elements[i]); -        if (contains(element.attr('ng:bind'), name) || -            contains(element.attr('ng:bind-template'), name)) { -          if (element.is('input, textarea')) { -            done(null, element.val()); -          } else { -            done(null, element.html()); -          } -          return; -        } +      var values = $document.elements().bindings(name); +      if (!values.length) { +        return done("Binding selector '" + name + "' did not match.");        } -      done("Binding selector '" + name + "' did not match."); +      done(null, values[0]);      });    };  }); @@ -243,16 +229,7 @@ angular.scenario.dsl('repeater', function() {    chain.column = function(binding) {      return this.addFutureAction("repeater '" + this.label + "' column '" + binding + "'", function($window, $document, done) { -      var values = []; -      $document.elements().each(function() { -        _jQuery(this).find(':visible').each(function() { -          var element = _jQuery(this); -          if (element.attr('ng:bind') === binding) { -            values.push(element.text()); -          } -        }); -      }); -      done(null, values); +      done(null, $document.elements().bindings(binding));      });    }; @@ -262,13 +239,7 @@ angular.scenario.dsl('repeater', function() {        var matches = $document.elements().slice(index, index + 1);        if (!matches.length)          return done('row ' + index + ' out of bounds'); -      _jQuery(matches[0]).find(':visible').each(function() { -        var element = _jQuery(this); -        if (angular.isDefined(element.attr('ng:bind'))) { -          values.push(element.text()); -        } -      }); -      done(null, values); +      done(null, matches.bindings());      });    };  | 
