我目前正試圖實施一個指令,應該讓一些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通信(接收/發送)信息。不幸的是,我還沒有找到使其工作的方法。我錯過了/誤解了什麼嗎?