Skip to content
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.

Commit

Permalink
fixed issue where ng:bind would not reset value if expression returne…
Browse files Browse the repository at this point in the history
…d undefined
  • Loading branch information
mhevery committed Oct 13, 2010
1 parent 2cb9497 commit 3ab4953
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 3 deletions.
31 changes: 31 additions & 0 deletions regression/filter_repeater.html
Original file line number Diff line number Diff line change
@@ -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>
2 changes: 1 addition & 1 deletion src/directives.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ angularDirective("ng:bind", function(expression){
element.html('');
element.append(value);
} else {
element.text(value);
element.text(value === _undefined ? '' : value);
}
}
}, element);
Expand Down
15 changes: 13 additions & 2 deletions test/directivesSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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>';
Expand All @@ -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>');
});

});
Expand Down

0 comments on commit 3ab4953

Please sign in to comment.