观察属性的角度指令
Angular directive that watches a propertie
我喜欢编写一个小的Angular指令,在用户登录时隐藏或显示元素。我注入的身份验证工厂基本上是读取值并将值写入cookie。问题是,"scope.$watch(authentication.isAuthenticated)"只调用一次。如果"isAuthenticated"发生更改,则不会调用事件/观察程序。
app.directive('IfUserIsLoggedin', ["authentication", function (authentication) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
function setClass() {
if (element !== undefined) {
if (authentication.isAuthenticated) {
element.removeClass("hidden");
} else {
element.addClass("hidden");
}
}
}
scope.$watch(authentication.isAuthenticated, function () {
setClass();
});
setClass();
}
};}]);
我在代码中使用了Angular文档中的这个示例。
您的代码不起作用的原因是您正在观察的值不在范围内。要么将其添加到范围中,要么使用不同形式的$watch(…),如下所示:
scope.$watch(function() { return authentication.isAuthenticated }, function () {
setClass();
});
并且您的代码会很高兴:)。
相关文章:
- 具有{{}}指令属性的Angular
- AngularJs,在没有隔离的情况下将指令属性添加到作用域
- 如何使用指令属性值创建动态模板
- 通过指令属性传达操作
- AngularJS观察指令属性表达式,动态继承作用域
- 监视自定义指令属性在父作用域更改时不发生更改
- AngularJS:将$scope变量作为指令属性传递
- 指令 : 属性必须指定一个函数
- 将指令属性添加到指令元素
- 检查是否传递了指令属性
- 在 AngularJS 中计算指令属性中的表达式
- 将对象传递给 Angular 指令属性未通过
- AngularJS:无法从自定义指令属性中检索值以在自定义指令中解析
- 角度JS观察指令属性
- AngularJS指令属性在观察时不呈现值
- AngularJS:更改指令属性
- 正在访问控制器中的指令属性
- 在AngularJS中,当指令属性的作用域变量基于camelBase时,为什么它们需要用连字符分隔
- AngularJS将javascript对象绑定到指令属性
- 如何设置指令属性的默认值