사이트에 사용자가 좋아하는 항목을 표시하는 로그인 화면과 위젯이있는 앱이 있습니다. 사이트 HTML사용자가 로그인 한 후 Angularjs : 지시어 업데이트보기
<header data-ng-controller="SideBarController">
<section id="sidebar">
<div sidebar-user-info></div>
<div sidebar-my-favorites-list></div>
<p class="full"><a href="#/logout">logout</a></p>
</section>
</header>
<script id="sideBarFavoritesList_template" type="text/ng-template">
<ul id="my-favorites" class="full no-bullets">
<li data-ng-repeat="fav in myFavorites">
<a href="#" id="{{fav.id}}"><img ng-src="/gfx/apps/icons{{ fav.icon }}" width="36" height="36" alt="{{ fav.name }} icoon" class="favicon">{{ fav.name }}</a>
</li>
</ul>
</script>
나는 다음있어 인라인 템플릿 블록
위젯App.directive('sidebarMyFavoritesList', ['$rootScope', function sideBarMyfavoritesList($rootScope) {
return {
template: $('#sideBarFavoritesList_template').html(),
restrict: 'A',
replace: true
};
}]);
전체 사이드
을 둘러싼 컨트롤러를 렌더링 지침function SideBarController($http, $scope, $rootScope, helper, UserService)
{
$rootScope.user = UserService.data;
$rootScope.loggedIn = UserService.isLogged;
$scope.toggleBar = function toggleBar() {
if (!UserService.isLogged) {
return;
}
$rootScope.state.appbar = !$rootScope.state.appbar;
};
var serviceUrl = "/api/favorites/user";
$http.get(serviceUrl).success(function(d) {
$scope.myFavorites = d.data;
});
}
사용자가 로그인하면 UserService
이 업데이트되지만 사이드 바는 항상 표시됩니다. 내가 원하는 것은 사이드 바가 스스로 새로 고쳐져 사용자의 즐겨 찾기를 렌더링한다는 것입니다.
rootscope에서 사용자가 성공적으로 로그인 한 후 루트 스코프를 사용하여 사용자 정보를 찾았습니다. 그러나 그것은 매우 해키 한 느낌입니다.
내가 보는 방식으로, 사용자가 로그인 한 후 해당 서비스에 대한 아약스 호출을 다시 실행해야하지만 어디에서해야하는지 잘 모릅니다.
로그인 후 페이지를 새로 고치면 처음 페이지로드가 시작될 때 서버 쪽에서 사용자 세션을 사용할 수 있기 때문에 즉시 작동합니다.
rootscope.user를 기반으로하는 이벤트 시스템이 내가 원하지 않는 종속성이기 때문에 백본과 같은 각도로 이벤트 시스템을 찾고있었습니다. 그 사용자 객체를 작동하게 만들 수 있습니다. 가능한 가장 좋은 방법인지 확실하지 않습니다. – Sander
$ scope. $ emit() 및 $ scope. $ on()을 이벤트 시스템으로 사용할 수 있습니다. – Luca
hm 고마워, 그걸 위해 $ rootScope을 사용해야 겠어, 글로벌 이벤트 애그리 게이터. 나는 당신이 여러 개의 지시문을 통해 공유 된 이벤트를 듣고 있다면 특히 로컬 $ scope를 사용하는 것이 불가능하다고 생각합니다. 그러나 팁을 주셔서 감사합니다 ... – Sander