javascript - 观察属性的 Angular Directive(指令)

标签 javascript angularjs angularjs-directive

我喜欢编写一个小的 Angular 指令,在用户登录时隐藏或显示一个元素。我注入(inject)的身份验证工厂基本上读取值并将其写入 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();
    }
};}]);

我用过this sample from the Angular documention对于我的代码。

最佳答案

您的代码无法正常运行的原因是您正在查看的值不在范围内。要么将其添加到作用域,要么使用不同形式的 $watch(...) ,如下所示:

scope.$watch(function() { return authentication.isAuthenticated }, function () {
    setClass();
});

你的代码会很高兴:)。

关于javascript - 观察属性的 Angular Directive(指令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26217180/

相关文章:

javascript - 将评分计算为数字

javascript - Angular 只加载第一个指令

javascript - 在 highchart 折线图上禁用平均值

javascript - 无法使用 select2 4.0 粘贴来插入多个项目

循环内的 JavaScript 闭包 – 简单的实际示例

javascript - Angular x2js xml 未定义

angularjs - Visual Studio Code 调试中未实现的控制台 API : undefined, 错误

javascript - AngularJS动态过滤器配置无法解决

javascript - Angular.js 动画

javascript - 在 JavaScript 中将点击更改为按键