From 32086ad48f385e2008452fb6824e02c9c6447884 Mon Sep 17 00:00:00 2001 From: Quentin Lampin Date: Fri, 12 Jun 2015 12:01:31 +0200 Subject: [PATCH] fix(marker): markers now update on model changes motivation: markers update relies on a comparison between a cached (cloned) version of the model and the reference model. Prior to this commit, the cached model is built using a shallow copy of the reference model (using `_.extends`). Thus, both cached and reference model properties are always identical and model properties changes, e.g. coordinates, are not reflected on the map. In this commit, the cached model is built using a *deep-copy* using `_.clone(model,true)`. solves issue #1350 --- .../directives/api/models/child/marker-child-model.coffee | 4 ++-- .../directives/api/models/child/window-child-model.coffee | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/coffee/directives/api/models/child/marker-child-model.coffee b/src/coffee/directives/api/models/child/marker-child-model.coffee index f5fc89d88..97e63d16c 100644 --- a/src/coffee/directives/api/models/child/marker-child-model.coffee +++ b/src/coffee/directives/api/models/child/marker-child-model.coffee @@ -23,7 +23,7 @@ angular.module('uiGmapgoogle-maps.directives.api.models.child') @trackModel = true, @needRedraw = false) -> #where @model is a reference to model in the controller scope #clonedModel is a copy for comparison - @clonedModel = _.extend({},@model) + @clonedModel = _.clone(@model,true) @deferred = uiGmapPromise.defer() _.each @keys, (v, k) => keyValue = @keys[k] @@ -80,7 +80,7 @@ angular.module('uiGmapgoogle-maps.directives.api.models.child') @needRedraw = true updateModel: (model) => - @clonedModel = _.extend({},model) #changed from _.clone(model, true) eliminates lodash dep (so you can use underscore) + @clonedModel = _.clone(model,true) #changed from _.clone(model, true) eliminates lodash dep (so you can use underscore) @setMyScope 'all', model, @model renderGMarker: (doDraw = true, validCb) -> diff --git a/src/coffee/directives/api/models/child/window-child-model.coffee b/src/coffee/directives/api/models/child/window-child-model.coffee index 45e93b217..b1172d9e0 100644 --- a/src/coffee/directives/api/models/child/window-child-model.coffee +++ b/src/coffee/directives/api/models/child/window-child-model.coffee @@ -199,7 +199,7 @@ angular.module('uiGmapgoogle-maps.directives.api.models.child') @scope.$destroy() updateModel: (model) => - @clonedModel = _.extend({},model) + @clonedModel = _.clone(model,true) _.extend(@model, @clonedModel) WindowChildModel