2017-02-01 3 views
1

У меня есть объект, например, так:Javascript - Не можете нажать на внутренний объект

var chosen=[{nrChart:1, chosenGraphics:[]}]; 

, с которым я использую electron-window-manager создать sharedData так:

windowManager.sharedData.set("chosen",chosen); 

После этого я принести, что sharedData в другом файле js, например:

that.exp = windowManager.sharedData.fetch("chosen"); 

Пока что так хорошо. Проблема в том, что я могу сделать that.exp.push(1), но не that.exp[0].chosenGraphics.push(1), который возвращает новую длину, но массив остается неизменным.

Что происходит?

Структура объекта that.exp для уточнения:

Structure of the object that.exp for clarification

** Редактирование: chosenGraphics: Array 1 расширен ** enter image description here

+0

сообщения вашего кода! – Pointy

+0

Вы пытались установить общие данные снова после нажатия? Возможно, он не будет обновляться автоматически. – Seiyria

+1

expand "selectedGraphics: Array [1]" node – Igor

ответ

0

я не нашел, почему я не мог нажать на chosenGraphics, но я узнал, что решение, которое должны было сделать клон объекта с JSON.parse(JSON.stringify(windowManager.sharedData.fetch("chosen")));

0

Похоже, у вас есть chosenGraphics определено несколько раз в вашем объекте that.exp[0]. Существует массив под названием chosenGraphics, и есть две функции: chosenGraphics. Когда вы вызываете that.exp[0].chosenGraphics.push(1), вероятно, он пытается выполнить push по одной из функций, которые не имеют свойства или метода push.

+0

Ty для ответа. Эти функции, установленные и получаемые, выполняются не мной, а автоматически, когда я делаю 'windowManager.sharedData.set (« выбранный », выбранный);'. С учетом сказанного, как я могу это решить? –

+0

Кроме того, если функции не имеют метода «push», я получаю сообщение об ошибке. Вместо этого я получаю целое число, обозначенное новой длиной 'selectedGraphics'. –

+0

Как выглядит ваш сырой json, возвращающийся из 'windowManager.sharedData.fetch'? –