在我们的总体布局中,我们有一个侧边栏,其中包含一些用户详细信息,如姓名和缩略图。但也有一些不同的东西。
我们的想法是使用指令加载侧边栏,在其中有 2 个模板,1 个在登录时,1 个在注销时。
显示和不显示用户详细信息。
但是,我们有一个名为 sidebar 的指令,可以与 2 个中的任何一个一起使用,
App.directive('sidebar', ['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
改变时?
我们这样做是否正确?