我有一個簡單的場景
<thead grid-columns pager-info="pagerInfo" onsort="onSort()">
<tr>
<th width="15%"><column sortby='FName'>Name</column></th>
<th width="17%"><column sortby='Mobile'>Number</column></th>
</tr>
</thead>
的想法是,因爲我所有的列都需要定義一個onsort
,我就可以把它定義一次父。
但是,爲什麼我的孩子指令(列)沒有將它的$parent
設置爲grid-columns指令?相反,scope.$parent
設置爲控制器作用域,所以我無法解決如何從我的子指令訪問我的父指令作用域。
這兩個指令有一個孤立的範圍,我的孩子指令transcludes:
ngApp.directive('gridColumns', function() {
// Attribute-based wrapper round the columns that allows us to capture the pagerInfo and set a sort handler.
return {
restrict: 'A',
scope: {
pagerInfo: '=',
onsort: '='
}
};
});
ngApp.directive('column', function() {
return {
restrict: 'E',
transclude: true,
replace: true,
scope: {
sortby: '@'
},
template: "<span><a ng-click='sort()' ... </span>",
link: function (scope, el, attrs) {
scope.sort = function() {
// I want to call scope.$parent.onsort, but scope.$parent is the controller !
// scope.$parent.onsort(scope.sortby);
};
}
};
});
可以通過這個網址@ http://stackoverflow.com/questions/20212354/angularjs-accessing-parent-directive-properties-from-child -directives –