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 date copy creates an object instead of date
Browse files Browse the repository at this point in the history
  • Loading branch information
mhevery committed Oct 13, 2010
1 parent 3ab4953 commit 805753d
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 4 deletions.
30 changes: 30 additions & 0 deletions regression/resource_json_date.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE HTML>
<html xmlns:ng="http://angularjs.org">
<head>
<script type="text/javascript" src="../src/angular-bootstrap.js" ng:autobind></script>
</script>
<script type="text/javascript">
angular.service('myService', function($resource){
this.myData = $resource('resource_json_date.json');
}, {$inject:['$resource'], $creation:'eager'});

/* The Controller object */
MyController = function() {
this.inlineData = angular.fromJson('{reportDate:"2010-10-13T17:37:00Z"}');
this.jsonData = this.myData.get();
};



</script>
</head>
<body ng:controller="MyController" ng:init="$window.$root = this">
<h3>This data is loaded with angular.fromJson:</h3>
{{ inlineData.reportDate | date }}
<hr/>
<h3>This data is loaded from a resource using a service:</h3>
<p>Name: {{ jsonData.name }}</p>
<p>Parsed date: {{ jsonData.reportDate }} (A date should be displayed here)</p>

</body>
</html>
1 change: 1 addition & 0 deletions regression/resource_json_date.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{reportDate:"2010-10-13T17:37:00Z", name:"camilo"}
10 changes: 6 additions & 4 deletions src/Angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,14 +226,16 @@ function isLeafNode (node) {
*/
function copy(source, destination){
if (!destination) {
destination = source;
if (source) {
if (isArray(source)) {
return copy(source, []);
destination = copy(source, []);
} else if (source instanceof Date) {
destination = new Date(source.getTime());
} else if (isObject(source)) {
return copy(source, {});
destination = copy(source, {});
}
}
return source;
} else {
if (isArray(source)) {
while(destination.length) {
Expand All @@ -250,8 +252,8 @@ function copy(source, destination){
destination[key] = copy(source[key]);
}
}
return destination;
}
return destination;
}

function equals(o1, o2) {
Expand Down
7 changes: 7 additions & 0 deletions test/AngularSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,13 @@ describe("copy", function(){
assertSame(arr, copy([], arr));
});

it("should copy Date", function(){
var date = new Date(123);
expect(copy(date) instanceof Date).toBeTruthy();
expect(copy(date).getTime()).toEqual(123);
expect(copy(date) === date).toBeFalsy();
});

it("should copy array", function(){
var src = [1, {name:"value"}];
var dst = [{key:"v"}];
Expand Down

0 comments on commit 805753d

Please sign in to comment.