Custom Attribute Directive被匹配到ng-attr-myCustomAttribute。

16 浏览
0 Comments

Custom Attribute Directive被匹配到ng-attr-myCustomAttribute。

我正在使用一个带有以下自定义属性指令的第三方库:\n

angular.directive('snapDrawer', function () {
'use strict';
return {
  restrict: 'AE',
    ...

\n所以如果在HTML元素中找到了属性“snap-drawer”,则指令实现就会匹配并触发,例如:\n


\n我正在使用Angular 1.3,它对ng-attr采用了“全有或全无”的方法,如果值条件未定义,则属性不会呈现,例如:\n


\n百分之百可以确认这是有效的,我的控制器中的data.addSnapDrawer的值是未定义的,snap-drawer属性没有在DOM中呈现\n我已经验证了Angular 1.3对ng-attr采用了“全有或全无”的方法,详情请参阅这里:What is the best way to conditionally apply attributes in Angular?(看看Mathew Foscarini的回答)\n但是在DOM中呈现的是:\n


\n所以,难以置信的是,angular.directive(\'snapDrawer\')与\"ng-attr-snap-drawer\"匹配。这怎么可能,我真的对AngularJS感到震惊,它居然有这样的一个bug。\n我在网上找不到任何相关信息。我不能设置snap-drawer=\"false\",我需要它不出现在DOM中,这通过从Angular 1.2升级到1.3实现了。

0
0 Comments

根据上述内容,问题的出现原因是由于Angular作者在设计中决定了这种行为。解决方法是根据实际情况采用不同的方式来有条件地应用指令,例如使用ng-switch并在HTML中有两个版本,一个带有指令,一个不带;或者使用具有高优先级的终端指令,在链接阶段评估表达式,应用必要的指令并编译元素。

0