У меня есть директива, которая получает объект:Два пути привязки без изолированного объема
export class MyListDirective implements ng.IDirective {
bindToController = true;
controller = MyListDirectiveController;
controllerAs = "vm";
require = ["^parentDirective"];
restrict = "E";
templateUrl = '/list.tpl.html';
scope = {
detailedObject: "="
};
}
MyListDirectiveController:
export class MyListDirectiveController implements IMyListScope{
colliRelatedDetails: ColliEventGroup[];
static $inject = ['$scope'];
constructor(scope:any) {
}
}
и шаблон (list.tpl.html):
<div class="table-responsive">
<table id="listtable"
class="table valigntoptable collapse-table table-striped table-hover">
<thead>
<tr>
<th>
<div class="cursor-pointer" ng-click="vm.sortEventsByNumber()">Number</div>
</th>
<th>
<div class="cursor-pointer" ng-click="vm.$parent.sortEventsByValue()">Value</div>
</th>
</tr>
</thead>
<tbody ng-repeat="Event in vm.detailedObjects">
<tr class="top-padding">
<td>
{{Event.number}}
</td>
<td>
{{Event.value}}
</td>
</tr>
</tbody>
</table>
</div>
Как вы можете видеть, у меня нет метода сортировки в MyDirectiveController
. Методы, которые я пытаюсь решить, находятся в контроллере родителей (так как мне нужен другой подобный список). Поэтому мне нужно вызвать методы parentDirectiveController
. Но как мне получить к ним доступ?
Я не могу избавиться от изолированного объема, потому что мне нужна двусторонняя привязка. В противном случае список не будет обновляться, когда вызываются функции sort-functions.
И добавить новые методы сортировки внутри MyListDirectiveController
, ввести родительский знак и затем вызвать методы. Но похоже, что это не было бы чистым способом сделать это.
как это может иметь отношение к вопросу? это, по-видимому, является основным примером углового использования. – Claies