в нашем общем макете у нас есть боковая панель, которая содержит несколько сведений о пользователе, таких как имя и миниатюра. но и несколько разных вещей.
у нас была идея загрузить боковую панель с директивой, а внутри нее иметь 2 шаблона, 1 при входе в систему и 1 при выходе из системы.
отображать и не отображать сведения о пользователе.
однако у нас есть директива sidebar, работающая с любым из двух,
App.directive('боковая панель', ['UserService', '$compile', function(User, $compile) {
var getTemplate = function() {
console.warn(User.isLogged);
var templateUrl = "#sidebar" + ((User.isLogged) ? '_loggedin' : '') + "_template";
console.log('requesting template: [%s]', templateUrl);
return $(templateUrl).html();
};
return {
restrict: 'A',
link: function link(scope, element, attrs) {
var tmpl = getTemplate();
element.html(tmpl);
element.replaceWith($compile(element.html())(scope));
},
template: getTemplate()
};
}]);
и мы загружаем наши данные пользователя в службу
App.factory('UserService', [function userService() {
var User = {
isLogged: false,
username: ''
};
return User;
}]);
форма входа принимает это UserService
как зависимость и устанавливает для него isLogged
значение true
но как я могу позволить директиве перерисовать боковую панель, когда isLogged
изменено?
мы делаем это правильно?