aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--regression/resource_json_date.html30
-rw-r--r--regression/resource_json_date.json1
-rw-r--r--src/Angular.js10
-rw-r--r--test/AngularSpec.js7
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"}];