Данные и модели в AngularJS

У меня есть это WebApp с этим макетом HTML

Nav-столбец-| Центральная колонна ---- | Правая колонка

Link1---------|Данные, соответствующие|Данные, соответствующие Link1-A

Ссылка2---------| в столбец Nav------| (т.е. на основе ссылки на центральную колонку)

Ссылка3---------| Ссылка1-A---------------|

----------------| Ссылка1-B------------- |

Я хочу полностью использовать сильные стороны AngularJS. Я разделил три столбца на три разных представления, причем столбец Nav загружается при загрузке страницы. Теперь я хочу изменить MODEL/DATA, отображаемый в центральном столбце, на основе ссылки, которую пользователь щелкает в навигационном столбце. Как я могу это сделать?

Я понимаю, что мне не нужно менять вид (что глупо, я думаю). Мне нужно только изменить данные.


person SLearner    schedule 27.08.2013    source источник
comment
поставь часы на $location.path() и делай что хочешь   -  person Ajay Beniwal    schedule 27.08.2013
comment
Похоже, вы должны транслировать событие между контроллерами, когда пользователь нажимает на навигационную колонку.   -  person Zack Argyle    schedule 27.08.2013


Ответы (2)


Я предлагаю вам взглянуть на этот замечательный пост в блоге, предлагающий решение для вложенных представлений и маршрутизации. Вы найдете полное решение для управления представлениями с помощью ng-switchи ng-include, похожее на то, что говорит Бенуа Трембле.

http://www.bennadel.com/blog/2441-Nested-Views-Routing-And-Deep-Linking-With-AngularJS.htm

person Frank6    schedule 27.08.2013
comment
Да, я видел этот пост. Многого не понял! Я очень новичок в AngularJS. У вас есть и другие ссылки? Может быть, где-то есть рабочий пример или plunkr? - person SLearner; 28.08.2013
comment
Вы должны взглянуть на это: angular-ui.github.io/ui -router/sample/# Это почти та же концепция, но разработанная для angularui, и у нее есть отличный образец. - person Frank6; 29.08.2013
comment
Frank6 Я использую это прямо сейчас, но как мне изменить данные там? Я могу создать несколько представлений, вложенных представлений и т. д., но как изменить данные в представлении? - person SLearner; 29.08.2013
comment
Это данные, которые вам нужно загрузить, или данные, которые у вас уже есть? Вы пытались использовать область для изменения данных scope.data. Вы смотрели на метод разрешения для разрешения любых зависимостей асинхронного контроллера? Может опубликовать немного вашего кода? - person Frank6; 29.08.2013

У вас есть почти два варианта:

  1. Вы используете ng-show и переменную области видимости, совместно используемую вашими представлениями. (Ваш центральный вид станет беспорядочным, если у вас много вещей, отлично, если у вас не так много всего происходит)

  2. Вы используете чистый ng-include и переменную области действия с представлением, которое хотите показать. Отлично, если у вас много возможностей.

Или вы можете смешать оба, если хотите сгруппировать некоторые из них. Это полностью зависит от того, что вам нужно.

person Benoit Tremblay    schedule 27.08.2013