Когда вы назначаете dict2 = dict1
, вы не делаете копию dict1
, это приводит к тому, что dict2
является просто другим именем для dict1
.
Чтобы скопировать изменяемые типы, такие как словари , используйте copy
/ deepcopy
модуля copy
.
import copy
dict2 = copy.deepcopy(dict1)
Так же, как упомянуто @NullVoxPopuli, это зависит от вашей версии ember, но я собираюсь предположить, что вы используете > 3
или более позднюю версию.
Мое первое замечание заключается в том, что я почти исключительно перешел к импорту и использованию функции get
, которая, как и , определена в документации и очень хорошо описана. @Pavol в другом подобном посте , позволяет вам не знать, пытаетесь ли вы получить свойство для простого объекта javascript или объекта Ember.Object
.
Чтобы ответить более прямо, я не уверен, что служба, на которую вы ссылаетесь, пытается выполнить, но основываясь на том, что вы написали, вы вполне могли бы просто позвонить get(this, 'maps.location')
в вашем контроллере. и удалите или игнорируйте этот метод обслуживания.
В документации Ember также указывается, что, пока вы знаете метод, который вы хотите использовать из внедренного сервиса, вы можете просто вызывать его из текущего объекта Ember.Object без использования get
; например:
export default Controller.extend({
maps: service(),
location: computed('maps.location', function() {
return this.maps.getLocation()
})...
Причина, по которой вы можете захотеть использовать get
, заключается в том, что вы не уверены, что свойство, к которому вы обращаетесь, вычислено или нет.
Когда вы вызываете
BLOCKQUOTE>get
для вычисляемого свойства, вызывается функция, и вместо самой функции возвращается возвращаемое значение.