就绪函数指令应该只执行一次

Posted

技术标签:

【中文标题】就绪函数指令应该只执行一次【英文标题】:Directive on ready function should only execute once 【发布时间】:2016-08-15 16:40:15 【问题描述】:

您好专家我有一个指令“我的表”,其中有一个用于编辑记录的按钮。 内部指令模板(html 文件)我有一个按钮

<a data-activates="editScreen" class="button-collapse">Edit
</a>

内部JS文件

angular.element(document).ready(function () 
$('.button-collapse').sideNav(
    menuWidth: 450,
    edge: 'right', 
    closeOnClick: true 
);

)

我想在文档就绪功能上初始化 sideNav

问题是这个指令在循环中调用,每次指令调用这个代码都会产生问题。 (视图中的背景类太多,不会让侧导航按预期关闭)

我希望这段代码只执行一次。

我该如何解决这个问题。

提前致谢

【问题讨论】:

【参考方案1】:

只需使用真正的指令,如下所示:

angular.module('[moduleName]').directive('buttonCollapse', function()
    return
         restrict:'C',
         link:function(scope, element, attrs)
             $(element).sideNav(
               menuWidth: 450,
               edge: 'right', 
               closeOnClick: true 
             );
         
    
)

【讨论】:

对不起,我无法理解。我怎么能用这个。你能解释一下吗? 我编辑是因为我忘记了.modulebefore .directive。你在谈论一个指令,所以我为你做了一个符合你需要的指令。这将使所有具有类“button-collapse”的元素都被视为一个新的角度指令,并将按照链接函数中的说明进行处理。链接功能仅在创建元素时执行,因此不再存在多次执行的问题。 感谢您的回复。非常体面的解决方案。但唯一的问题是侧导航没有像之前那样在点击外部时接近。 还有像“parent”这样的属性吗?对于其中一些组件,您必须定义哪个 DOM 元素是父元素,以便在单击父元素外部时关闭,有时默认情况下父元素是

以上是关于就绪函数指令应该只执行一次的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的就绪函数总是在控制器或指令重新初始化时运行

第二节:指令的使用——自定义指令

完成就绪状态后,清除缓存后,JS函数只会运行一次?

vue2自定义指令-加载指令v-loading和占位图指令v-showimg

等待组件在自定义 svelte 指令中准备就绪

vue.js实现内部自定义指令和全局自定义指令------directive