我讀過一些類似的回答我的問題控制器通信,如this one雖然不能將其翻譯成我自己的要求 - 來自缺乏瞭解......指令與分離範圍與AngularJS
我有一個控制器:
appControllers.controller('TransactionsCtrl', ['$scope', 'InfiniteScrollingDataService', function ($scope, dataService) {
// setup our scope properties
$scope.$root.title = 'Transactions';
var urlQuery = {
skip: 0,
take: 25,
search: '',
order: 'DateTimeCreated',
orderBy: 'desc',
transactionTypeID: null,
transactionStatusID: null
};
var apiUrl = 'api/transactions';
$scope.transactions = new dataService(apiUrl, urlQuery);
$scope.Filter = function (senderParent, type, id) {
$scope.FilterApplied = true;
console.log('filter in controller: ' + senderParent + ' ' + type + ' ' + id);
}
}]);
而且我有一個指令:
appDirectives.directive('bootstrapListItems', ['$rootScope', function ($rootScope) {
return {
restrict: 'A',
templateUrl: 'bootstrapDropDownItems.html',
link: function (scope, element, attrs) {
scope.type = attrs.useGlobaljsonObject;
scope.parentElement = attrs.id;
scope.items = [];
var obj = $rootScope.globalJSON[scope.type];
for (o in obj) {
scope.items.push({ key: o, value: obj[o] })
}
}
}
}]);
而對於我的指令模板:
<script type="text/ng-template" id="bootstrapDropDownItems.html">
<li class="active"><a href="#" class="lnkFilterList">- Any -</a></li>
<li ng-repeat="item in items">
<a href="#" class="lnkFilterList" ng-click="Filter(parentElement, type, item.key)">{{item.value}}</a>
</li>
</script>
如果我不隔離指令的作用域,那麼控制器被調用正確,我看到控制檯註銷我的參數。
但是,我(想)我需要隔離範圍,因爲該頁面上會有這個指令的倍數。
當我添加scope: {}
到我的指令控制器功能不再被調用。
我也嘗試將我的ng-click
更改爲ng-click="$parent.Filter(.....)"
- 這似乎也沒有工作。
任何人都可以請我指出正確的方向嗎?
這將有助於解決您的問題http://stackoverflow.com/questions/15991137/calling-method-of-parent-controller-from-a-directive-in-angularjs/15991525#15991525 –