javascript - 观察 AngularJS 指令中函数的值

标签 javascript html angularjs angularjs-directive

有没有办法观察 AngularJS 指令中函数表达式的值变化?我有以下 HTML 和 JavaScript,模板中 {{editable()}} 的插值显示该值计算为 true,而检查 Chrome 中的 HTML 元素显示 contenteditable 是假的。

关于如何观察此函数的值变化并相应地更新元素 attr 有什么建议吗?或者有更好的方法来实现这一目标吗? (我仍然想评估该函数。)

HTML:

<h4 editable="account.hasRole('ROLE_ADMIN')" content="doc.heading"></h4>

Javascript:

mod
    .directive(
            'editable',
            function() {
                return {
                    restrict : 'A',
                    template : '<button class="btn pull-right"><i class="icon-pencil"></i></button>{{content}} ({{editable()}})',
                    scope : {
                        'content' : '=',
                        'editable' : '&'
                    },
                    link : function(scope, element, attrs) {
                        scope.$watch('editable', function(newValue) {
                            element.attr('contenteditable', newValue());
                        });
                    }
                };
            });

最佳答案

尝试将 watch 放在'editable()'上而不是'editable'

说明:需要这样做的原因是因为 '&' 指向属性表达式的动态生成的函数包装器,而不是表达式本身。这个特殊的包装函数返回 account.hasRole('ROLE_ADMIN') 的值。

关于javascript - 观察 AngularJS 指令中函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16704884/

相关文章:

html - 图标未出现

javascript - 如何在 AngularJS 上使用不同的元素添加类和删除类?

javascript - 返回 'undefined' 值的简单函数

javascript - 单击图标禁用扩展

javascript - 从成功函数ajax获取变量

javascript - Jquery 循环遍历表选择框

javascript - 将 Canvas 形状大小设置为 Canvas 的百分比

css - 将 CSS 宽度设置为 100% + 缺少右边框?

javascript - Firefox 上的 angular js 输入日期

javascript - 有没有办法在 AngularJS 中强制重新加载递归 ng-include ?