首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在angularjs中创建水印指令?

如何在angularjs中创建水印指令?
EN

Stack Overflow用户
提问于 2016-02-12 14:26:05
回答 1查看 1.1K关注 0票数 3

我有一个简单的应用程序,它使用jquery来为文本框添加水印。我写了一个非常简单的指令来使用这个水印,这样我就可以将它应用于输入元素,但它不起作用。如果我停止调试器,我可以看到添加了水印。但是,当UI完成加载时,水印就消失了。

代码语言:javascript
运行
复制
app.directive('ngWatermark', function(){
    return {
        restrict: 'A',
        link: function ($scope, $elem, attrs) {
            debugger
            $elem.watermark(attrs.ngWatermark);
        }
    }
});

要使用指令的标记代码。

代码语言:javascript
运行
复制
<input ng-watermark="Search Companies" />

这看起来应该行得通,但我还没有任何运气。有人能告诉我我可能会出错的地方吗?

我现在还注意到,如果我给了文本框焦点,然后再次离开,水印就会像预期的那样出现。

最后,我可以在指令中使用setTimeout获得预期的行为,但我更愿意对内部发生的事情进行解释。

代码语言:javascript
运行
复制
// HACK that makes it work
... 
setTimeout(function() { $elem.watermark(attrs.ngWatermark); }, 10);
EN

回答 1

Stack Overflow用户

发布于 2016-02-12 14:48:17

这是因为您的指令在DOM元素完全呈现之前执行。取决于watermark JQuery插件的内部工作情况,它在此阶段无法使更改生效。

当您使用$timeout时,执行将被推迟,直到JS在DOM完成时获得喘息空间。

有关示例,请参阅this文章。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35356163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档