我在angularjs中遇到以下问题。我想使用一个UI库,该库本身会注入一些html代码(Metro UI CSS),并且我难以正确地执行执行顺序。一个简单的例子:http://metroui.org.ua/hint.html如果我在html中声明:<span data-hint="My hint"></span>UIjs将创建提示显示所需的html元素。必须添加新的脚本代码。好吧,实际上,当您加载js时,将执行以下代码:$('[data-hint]')。hint();由于在我加载JavaScript时,创建的html角文件不存在,因此起初根本不起作用。我相信我需要一个角度指令来解​​决该问题(并且在某些方面确实可以解决)-我创建了fowlling指令:app.directive('hints', function() {return { link: function() {$('[data-hint]').hint()}};});即使确实是由angular创建的html,也可以执行以下操作:<span hints data-hint="the text for my hint">test</span>以下内容不起作用(至少不符合我想要的方式):<span hints data-hint="{{something}}">Test</span>提示文本将按字面显示{{something}},而不显示在角度表达式后面。我已经尝试创建类似的模板,但是结果仍然相同:app.directive('hints', function() {return { template: '<span data-hint="{{something}}">Test</span>', link: function() {$('[data-hint]').hint()}};});任何有关如何解决该问题的提示将不胜感激。 最佳答案 主要问题似乎是,如果将hint()附加到链接函数中,则jquery会在angular对它进行评估之前采用旧值。一种选择是将$timeout(function(){..})包裹在element.hint()周围,但是我已经过多地使用了该技巧,它不能解决另一个问题:提示需要在$scope更改时更新(如果它取决于)。为了解决该问题,我们可以添加$ watch函数并在需要时更新提示值。因此,结论是:/* 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-ui 1.10.3和angular 1.2.6测试)关于javascript - Angular JS-评估时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20869811/
10-10 03:52