我目前正试图实施一个指令,应该让一些DOM元素闪烁。为此,我使用$timeout
将元素的可见性设置为可见或隐藏。我的问题是,如果在$timeout
调用中对某个值进行硬编码(例如'500'),则所有操作都可以顺利进行。但是,如果我试图通过一个变量传递这个参数,我会非常快速地闪烁元素,就像没有输入参数一样(默认值为'0')。
HTML
<button class="btn btn-key"><span class="blink" blinkSpeed='500'>Q</span></button>
{{displayBlinkSpeed}}
JS
.directive('blink',function($timeout){
return{
restrict:'ACE',
transclude: true,
scope:{
blinkSpeed: '='
},
link: function(scope,element,attrs){
function showElement(){
var speed = parseInt(scope.blinkSpeed);
element.css("visibility","visible");
$timeout(hideElement,speed);
scope.displayBlinkSpeed = speed;
}
function hideElement(){
var speed = parseInt(scope.blinkSpeed);
element.css("visibility","hidden");
$timeout(showElement,speed);
scope.displayBlinkSpeed = speed;
}
showElement();
},
template: '<span ng-transclude></span>',
replace: true
};
});
另外,我忘了提及,{{displayBlinkSpeed}}
在HTML没有显示任何东西。 我的猜测是我的指令无法与DOM通信(接收/发送)信息。不幸的是,我还没有找到使其工作的方法。我错过了/误解了什么吗?