diff options
| -rw-r--r-- | regression/filter_repeater.html | 31 | ||||
| -rw-r--r-- | src/directives.js | 2 | ||||
| -rw-r--r-- | test/directivesSpec.js | 15 |
3 files changed, 45 insertions, 3 deletions
diff --git a/regression/filter_repeater.html b/regression/filter_repeater.html new file mode 100644 index 00000000..202a6311 --- /dev/null +++ b/regression/filter_repeater.html @@ -0,0 +1,31 @@ +<!DOCTYPE HTML> +<html xmlns:ng="http://angularjs.org"> +<head> + <script type="text/javascript" src="../src/angular-bootstrap.js" ng:autobind></script> + </script> +</head> +<body ng:init="$window.$root = this; data = [{foo: 'foo'},{bar: 'bar'}]"> + <p>This is a demo of a potential bug in angular.</p> + <p>Try the following:</p> + <ol> + <li> Type "foo" on the filter box. + <li> Clear the contents of the filter box. + <li> Type "bar" on the filter box. + <li> Clear the contents of the filter box. + </ol> + <p>Why doesn't the data goes back to the original?</p> + <hr> + Input: <input type="text" name="filterName" id="filterInputField"/> + <br/> + <table ng:eval="filtered_data = data.$filter(filterName)" style="border: 1px solid black"> + <tr> + <th>Foo</th> + <th>Bar</th> + </tr> + <tr ng:repeat="record in filtered_data"> + <td>{{record.foo}}</td> + <td>{{record.bar}}</td> + </tr> + </table> +</body> +</html>
\ No newline at end of file diff --git a/src/directives.js b/src/directives.js index 425685f3..c3d732a2 100644 --- a/src/directives.js +++ b/src/directives.js @@ -50,7 +50,7 @@ angularDirective("ng:bind", function(expression){ element.html(''); element.append(value); } else { - element.text(value); + element.text(value === _undefined ? '' : value); } } }, element); diff --git a/test/directivesSpec.js b/test/directivesSpec.js index d8f04b29..e65973dc 100644 --- a/test/directivesSpec.js +++ b/test/directivesSpec.js @@ -38,6 +38,16 @@ describe("directives", function(){ expect(element.text()).toEqual('misko'); }); + it('should set text to blank if undefined', function() { + var scope = compile('<div ng:bind="a"></div>'); + scope.a = 'misko'; + scope.$eval(); + expect(element.text()).toEqual('misko'); + scope.a = undefined; + scope.$eval(); + expect(element.text()).toEqual(''); + }); + it('should set html', function() { var scope = compile('<div ng:bind="html|html"></div>'); scope.html = '<div>hello</div>'; @@ -56,10 +66,11 @@ describe("directives", function(){ it('should have $element set to current bind element', function(){ angularFilter.myFilter = function(){ - this.$element.text('HELLO'); + this.$element.addClass("filter"); + return 'HELLO'; }; var scope = compile('<div>before<div ng:bind="0|myFilter"></div>after</div>'); - expect(scope.$element.text()).toEqual("beforeHELLOafter"); + expect(sortedHtml(scope.$element)).toEqual('<div>before<div class="filter" ng:bind="0|myFilter">HELLO</div>after</div>'); }); }); |
