javascript - 在自定义 AngularJS 指令中使用 $timeout

标签 javascript angularjs angular-directive

我想在我的自定义 AngularJS 指令中使用 $timeout,但它不起作用。我最后的实现如下所示:

var App = angular.module('App', []);

App.controller('Controller', function($scope){
    $scope.test = true;
    $scope.toggle = function(){ $scope.test = !$scope.test;};
});

App.directive('showTemporary', ['$timeout', function ($timeout) {
    return {
        restrict: 'A',
        link: function(scope, element, attr){
                scope.$watch(attr.showTemporary, function(value){
                element.css('display', value ? '' : 'none');
            });
            $timeout(element.css('display', 'none'), attr.hideDelay);
        }
    }
}]);

和标记:

<div ng-app='App'>
    <div ng-controller='Controller'>
        <button ng-click='toggle()'>toggle</button>
        <div show-temporary='test' hide-delay="5000"> visible</div>
    </div>
</div>

最佳答案

您需要将函数传递给 $timeout 尝试:

$timeout(function () {
 element.css('display', 'none')
}, attr.hideDelay);

此外,您应该观察属性,而不是观看。

attr.$observe('showTemporary', function(value){
                element.css('display', value ? '' : 'none');
            });

您的 html 也已损坏:

<div show-temporary="{{test}}" hide-delay="5000"> visible</div>

关于javascript - 在自定义 AngularJS 指令中使用 $timeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38644622/

相关文章:

javascript - 如何使用 yazl 压缩缓冲区?

javascript - AJAX返回的数据不正确

javascript - Angular,创建工厂服务来获取本地 JSON 数据

javascript - 静态响应有效!虽然异步不起作用

javascript - 为什么 Bootstrap 下拉调用 window.onfocus

javascript - javascript中的两个 ";"是什么意思

javascript - 如何在 AngularJS 中以复杂的方式绑定(bind)(?)多个变量?

javascript - 随机函数触发 $digest() 错误

javascript - AngularJS:在包含带有 templateurl 的指令的 html 上使用 $compile

angular - 哪个性能更好? ngx-translate 指令还是管道?