Я прошел через то, что должно быть 20 одинаковых вопросов, заданных на SO, но пока не найти решение для моей ситуации, поэтому я надеюсь, что вы, ребята, можете мне помочь.Установка переменной области видимости из директивы с AngularJS
Цель состоит в том, чтобы отсортировать список имен по свойству, указанному в атрибуте «тип сортировки» директивы, но только для списка внутри каждого контроллера (не все списки одновременно).
HTML
<div ng-controller="TestController as testOne">
<b>By:</b> {{testOne.sortType}}<br>
<b>Reverse:</b> {{testOne.sortReverse}}<br>
<div ng-repeat="item in testOne.list">
<p table-sort sort-type="name" sort-reverse="false"><a href="#">Sort by name</a></p>
<ul>
<li ng-repeat="childItem in testOne.childList | orderBy:testOne.sortType">{{childItem.name}}</li>
</ul>
</div>
</div>
<br><br>
<div ng-controller="TestController as testTwo">
<b>By:</b> {{testTwo.sortType}}<br>
<b>Reverse:</b> {{testTwo.sortReverse}}<br>
<div ng-repeat="item in testTwo.list">
<p table-sort sort-type="name" sort-reverse="false"><a href="#">Sort by name</a></p>
<ul>
<li ng-repeat="childItem in testTwo.childList | orderBy:testTwo.sortType">{{childItem.name}}</li>
</ul>
</div>
</div>
Javascript (Угловое)
var app = angular.module('demo', []);
app.controller('TestController', TestController);
function TestController() {
var vm = this;
vm.sortType = 'oldOrder';
vm.sortReverse = false;
vm.list = [1];
vm.childList = [{ name: 'Jimmy' },
{ name: 'Danny' },
{ name: 'Bobby' }];
}
/////////////////////////////////////
app.directive('tableSort', tableSort);
function tableSort() {
var directive = {
restrict: 'A',
link: linkFunc,
};
return directive;
function linkFunc(scope, element, attr) {
element.on('click', function() {
if(scope.sortType === attr.sortType) {
scope.sortReverse = !scope.sortReverse;
} else {
scope.sortType = attr.sortType;
}
});
}
}
Мой фактическое применение является немного более сложным, но я пытался абстрагировать насколько возможно BLE.
Спасибо для смотреть :)
Это работает очень хорошо для меня. Спасибо, что нашли время, чтобы помочь! –