Ember ссылаясь на собственность или добытчик

Когда вы назначаете dict2 = dict1, вы не делаете копию dict1, это приводит к тому, что dict2 является просто другим именем для dict1.

Чтобы скопировать изменяемые типы, такие как словари , используйте copy / deepcopy модуля copy .

import copy

dict2 = copy.deepcopy(dict1)

3
задан Redsandro 5 March 2019 в 21:04
поделиться

1 ответ

Так же, как упомянуто @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, заключается в том, что вы не уверены, что свойство, к которому вы обращаетесь, вычислено или нет.

Когда вы вызываете get для вычисляемого свойства, вызывается функция, и вместо самой функции возвращается возвращаемое значение.

0
ответ дан fentech 5 March 2019 в 21:04
поделиться