在我们的总体布局中,我们有一个侧边栏,其中包含一些用户详细信息,如姓名和缩略图。但也有一些不同的东西。Angularjs:在用户登录时用不同模板重绘指令
我们的想法是在侧边栏加载一个指令,其中有2个模板,登录时为1,注销时为1。
显示并不显示用户详细信息。
但是,我们有一个叫边栏指令与2的工作,
App.directive( '边栏',[ 'UserService', '$编译',功能(用户,$编译){
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
被更改?
我们是这样做的吗?
这看起来很好,另一个选项可能是ng-include,其中templateURL被更改。 – shaunhusain
我试过你的解决方案,但是我不相信结果,问题是,登录版本,例如有一个用户头像,如果我有'src属性'src =“/ images/users/{{user.avatar}}“'不要紧,如果节目显示它,它会得到渲染,这意味着当user.avatar属性未定义时它将抛出404 任何想法如何解决这样的事情? – Sander
你应该检查出ngSrc:http://code.angularjs.org/1.1.5/docs/api/ng.directive:ngSrc :) 应该照顾空值,并将正确解析指令。 –