How to re-render a directive 템플릿 링크 기능이 있나요?
-
21-12-2019 - |
문제
내가 만드는 탐색"트리"기본적으로 이동할 수 있는 부모하실 수 있습니다 그래서
Home > Planner > Contacts > john.smith@hotmail.com
이 목록은 그냥 일반 <ul>
는 변경된 각 시간을 변경하고 사용자를 클릭하여 상기 연결합니다.내가 사용하고 ui-router
ko $stateChangeStart
이벤트를 구축하는 내 목록 링크의 문제는 나의 지시어는 없다"다시 구축"이 목록에 모든 시간 페이지가 변경됩니다.
는 방법이 있을 강제로 지시어를 다시 렌더링하는 모든 시간을 변경 상태?
TreeNav directive
app.directive('treeNav', ['$rootScope', function ($rootScope) {
return {
replace: true,
restrict: 'E',
template: '<ul>\
<li ng-repeat="item in treeNavs">\
<a ui-sref="{{ item.state }}">{{ item.name }}</a>\
<span> > </span>\
</li>\
</ul>',
link: function (scope, elem, attrs) {
scope.treeNavs = $rootScope.treeNav.reverse();
scope.$watch('$rootScope.treeNav', function (newVal, oldVal) {
scope.treeNavs = newVal.reverse();
});
}
}
}]);
해결책
나는 당신을 믿지 않는 설정 $watch
문습니다.
당신은 또한주의해야의 사용과 .reverse
. reverse()
반대 항목 배열 에, 는 아마 당신이 원하는 무엇 때문에,그것을 수정하는 것에서 배열 $rootScope
.
당신이 사용할 수 있는 splice()
를 만드는 새로운 복사하고 다음 역에는:
scope.treeNavs = $rootScope.treeNavs.splice().reverse();
$rootScope.$watch('treeNav', function(newVal) {
scope.treeNavs = newVal.splice().reverse();
});
제휴하지 않습니다 StackOverflow