изискват един директивен контролер в друг

Това са начините, по които се опитах да изисквам контролера на една директива в друга.

1) http://jsfiddle.net/Xarm2/1/

2) http://jsfiddle.net/82UKq/1/

И в двата случая можете да видите в конзолата на firebug, че контролерът на необходимата директива е или undefined, или празен обект.

1) Как мога да получа достъп до „d1Cntrl“ вътре в директивата d2.

2) Моля, уведомете ме за един случай на употреба, който ще трябва да изисквам контролер на директива в друга директива.


person Rajkamal Subramanian    schedule 03.03.2013    source източник


Отговори (2)


  1. Вижте това страхотно скрийнкаст от Джон Линдквист относно комуникация от директива към директива

  2. Например, ако имате входен елемент, към който бихте искали да приложите две персонализирани валидации, където една валидация трябва да се изпълнява само ако първото валидиране премине (напр. валидирането за съвпадение на шаблон трябва да се активира само ако елементът има стойност).

person Stewie    schedule 03.03.2013

Малцина си мислят, че бих искал да го сложа тук

1) Директивите не създават собствен обхват, напр. <superhero strength>The Hulk</superhero> <superhero flight speed strength>Superman</superhero> <superhero speed>The Flash</superhero>

тези три директиви ще споделят един и същи обхват, освен ако изрично не кажем scope:true или scope:{} в дефиницията superhero. Ако ние не създаваме нов обхват, тогава последният супергерой ще бъде в сила.

2) Ако създадем нов обхват на ниво superhero, същият този обхват се споделя от сродните директиви като strength, flight и т.н.

3) Ако изискваме контролер на директиви в друга директива, API, който е дефиниран на контролера на директиви с помощта на ключовата дума this, ще бъде изложен на изискващата директива. Моля, обърнете внимание, че методите, които са дефинирани в обхвата на контролера $scope, няма да бъдат видими.

Моля, не се колебайте да редактирате, ако съставянето на изреченията е грешно или точките са грешни.

person Rajkamal Subramanian    schedule 03.03.2013