2015-08-11 2 views
0

У меня есть два контроллера AngularJS, где контроллер 1 всегда отображается в представлении, а контроллер 2 может меняться из вида в режим просмотра. Мне нужно убедиться, что контроллер 1 имеет доступ к некоторым переменным области. Таким образом, при загрузке, если я передаю весь объем контроллера 2 контроллеру 1, это повредит производительности страницы?AngularJS Область пропуска между контроллерами Производительность

+0

Попутный прицелы, вероятно, не то, что вы хотите (* Я даже не знаю, как вы бы сделать это *). Вы пытались поместить необходимые данные в общие угловые службы? – doldt

+0

Мы можем сделать это с помощью сервисов или корнеплодов. моя точка зрения заключается в том, что я должен иметь возможность изменять некоторые переменные области видимости с контроллера 1 без изменения большого количества кода контроллера 2. У контроллера нет собственных переменных области. –

ответ

1

Доступ к разграничению между контроллерами возможен, но только через наследование. Я уверен, что вы не можете «отправить» область на другой контроллер и полностью заменить его.

Я предлагаю либо трансляцию событий с данными между контроллерами, либо их хранение в службах AngularJS (factory). Поскольку это синглтоны, данные остаются неизменными до тех пор, пока вы не перезагрузите приложение.

EDIT: Что касается производительности, даже если коэффициент усиления очень мал, я бы предложил использовать службу для хранения данных. Таким образом, он действует как простой DTO и не требует двойного связывания (если он вам не нужен), что означает, что цикл $digest немного быстрее.

С уважением

+0

Хмм, но это неправда. Вы можете обмениваться областью, используя корневой каталог или фабрику. Но меня больше беспокоит производительность. –

+0

Вы все еще не «разделяете» сферу в этом смысле. '$ rootScope' является матерью всех областей. Все новые области создаются как дети '$ rootScope' и возможные области между новой областью и' $ rootScope'. До тех пор, пока вы уверены, что контроллер 2 является дочерним элементом контроллера 1, вы не можете получить доступ к данным, зависящим от конкретной области, на контроллере 1 от контроллера 2. Я бы предложил использовать службы, как я написал, или сохранить их на '$ rootScope '. Это ваш designchoice :) –

+0

Да, я делаю то, что вы говорите. Но мой вопрос заключается в том, что этот метод вредит производительности? –

Смежные вопросы