diff options
| -rw-r--r-- | regression/resource_json_date.html | 30 | ||||
| -rw-r--r-- | regression/resource_json_date.json | 1 | ||||
| -rw-r--r-- | src/Angular.js | 10 | ||||
| -rw-r--r-- | test/AngularSpec.js | 7 |
4 files changed, 44 insertions, 4 deletions
diff --git a/regression/resource_json_date.html b/regression/resource_json_date.html new file mode 100644 index 00000000..59300863 --- /dev/null +++ b/regression/resource_json_date.html @@ -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>
\ No newline at end of file diff --git a/regression/resource_json_date.json b/regression/resource_json_date.json new file mode 100644 index 00000000..78f70cb3 --- /dev/null +++ b/regression/resource_json_date.json @@ -0,0 +1 @@ +{reportDate:"2010-10-13T17:37:00Z", name:"camilo"}
\ No newline at end of file diff --git a/src/Angular.js b/src/Angular.js index 5bffac53..95970850 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -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) { @@ -250,8 +252,8 @@ function copy(source, destination){ destination[key] = copy(source[key]); } } - return destination; } + return destination; } function equals(o1, o2) { diff --git a/test/AngularSpec.js b/test/AngularSpec.js index 1ccdf1c3..e0228e16 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -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"}]; |
