首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角JS -评估定时

问角JS -评估定时
EN

Stack Overflow用户
提问于 2014-01-01 14:48:23
回答 1查看 469关注 0票数 1

我在angularjs中有以下问题。我想使用一个UI libary,它本身注入了一些html代码(Metro ),而且我在正确执行顺序方面遇到了困难。

一个简单的例子:http://metroui.org.ua/hint.html

如果我在html中声明:

代码语言:javascript
复制
<span data-hint="My hint"></span>

UIjs将创建提示显示所需的html元素。必须添加Nofurther脚本代码。实际上,当您加载js时,将执行以下代码:$(‘数据提示’).hint();

由于在加载javascript时不存在角创建的html,所以它一开始根本不工作。

我相信我需要一个角指令来解决这个问题(在某些部分是这样的)--我创建了fowlling指令:

代码语言:javascript
复制
app.directive('hints', function() {
return {
    link: function() {$('[data-hint]').hint()}
};
});

即使这是用角创建的html,以下内容也是有效的:

代码语言:javascript
复制
<span hints data-hint="the text for my hint">test</span>

以下内容不起作用(至少它的行为不像我所希望的那样):

代码语言:javascript
复制
<span hints data-hint="{{something}}">Test</span>

提示文本将按字面显示{某某},而不是显示角表达式后面的任何内容。我已经尝试创建了类似的模板,但是结果仍然是一样的:

代码语言:javascript
复制
app.directive('hints', function() {
return {
    template: '<span data-hint="{{something}}">Test</span>',
    link: function() {$('[data-hint]').hint()}
};
});

任何关于如何解决这个问题的提示都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-01 17:19:11

主要的问题似乎是,如果将hint()附加到链接函数中,jquery在角计算它之前就采用了旧的值。一种选择是将$timeout(function(){..})封装在element.hint()上,但是我已经使用了太多的黑客,它并没有解决另一个问题:提示需要在$scope更改时更新(如果它依赖于$scope)。为了解决这个问题,我们可以添加一个$watch函数,并在需要时更新提示值。

因此,结论是:

代码语言:javascript
复制
/* This directive triggers automatically on data-hint as well */
app.directive('hint', function($timeout) {
    return {
        link: function(scope, element, arguments) {

            /* set the value of the hint, then attach the metro-hint widget */
            element.data('hint' , arguments.hint).hint();

            /* watch for changes in the value so the hint gets updated */
            scope.$watch(function(){
                return arguments.hint; 
            }, function() {
                element.data('hint' , arguments.hint);
            });
        }
    };
});

(用jquery 1.10.2、jquery 1.10.3和角1.2.6测试)

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

https://stackoverflow.com/questions/20869811

复制
相关文章

相似问题

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