我正在使用AngularJS 1.5.8。 我有「myParent」和「myChild」組件。 在我看來,我有1個父母和2個孩子在那個父母裏面。 所以我的問題是:我想在「myParent」組件的控制器中有兒童「myChild」組件的實例,並且僅給特定的子項命令makePrimary(),或者像那樣...我如何實現此操作目標?從AngularJS的父級命令一個特定的子組件
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/
我考察像一些相關的問題:
但我找不到才達到用一個簡單的架構這個目標取之有道。
編輯
我知道有一些複雜的方法(從建築角度看),但我不想使用它們。例如:
使用$父母或
在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: '='
}
考慮使用服務共享狀態;它避免了爬行範圍的複雜性,$廣播處理程序的耗盡,並且很容易在控制器和指令中共享。 – RamblinRose