Я использую AngularJS 1.5.8. У меня есть компоненты «myParent» и «myChild». На мой взгляд, у меня есть 1 родитель и 2 ребенка внутри этого родителя. Итак, мой вопрос: я хочу иметь экземпляры дочерних компонентов "myChild" в контроллере компонента "myParent" и дать команду только определенному дочернему элементу для makePrimary() или что-то в этом роде... Как могу ли я достичь этой цели?
JS:
//var myApp =
angular.module('myApp', ['myChild', 'myParent']);
angular.
module('myChild', []).
component('myChild', {
template: '<div class="panel panel-default">' +
'<div class="panel-heading">Child</div>' +
'<div class="panel-body">' +
'Child content...' +
'</div>' +
'</div>',
controller: ['$scope', '$element',
function myChildController($scope, $element) {
}
]
});
angular.
module('myParent', ['myChild']).
component('myParent', {
template: '<div class="panel panel-default">' +
'<div class="panel-heading">Parent</div>' +
'<div class="panel-body">' +
'<my-child></my-child>' +
'<hr />' +
'<my-child></my-child>' +
'</div>' +
'</div>',
controller: ['$scope', '$element',
function myParentController($scope, $element) {
// TODO: MAKE CHILD-2 ".panel-primary" CLASS IN HERE.
// BUT ONLY A SPECIFIC CHILD!
}
]
});
HTML:
<div ng-app="myApp" class="container">
<my-parent></my-parent>
</div>
Пример JSFIDDLE: https://jsfiddle.net/zhc12t1a/4/
Я просмотрел некоторые связанные вопросы, такие как:
- angularJS: как вызвать функцию дочерней области в родительской области < /а>
- AngularJS — доступ к дочерней области
Но я не могу найти правильный способ достичь этой цели с помощью простой архитектуры.
ИЗМЕНИТЬ
Я знаю некоторые сложные методы (с точки зрения архитектуры), но я не хочу их использовать. Например:
Используя $parent или
в myParentController:
$scope.makeChild1Primary = function () {}
в шаблоне myParent:
<my-child make-primary="makeChild1Primary"></my-child>
в компоненте myChild
//...
var ctrl = this;
ctrl.makePrimary = function () { /* MAKE PRIMARY LOGIC HERE... */ }
//...
,bindings: {
makePrimary: '='
}