在角度中启用和禁用链接

时间:2015-10-14 12:54:18

标签: javascript angularjs

我只想与此相反。这是工作演示:http://jsfiddle.net/KQQD2/4/

意思是,第一次链接应该是禁用和不可点击的,当我选中复选框时,我只想使链接启用并可点击。

以下是代码:

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

    app.controller('appCtrl', function($scope, $window){
        $scope.disableIt = false;
        $scope.tellAboutIt = function(){
            $window.alert('ngClick fired. This alert should not show when disabled.');
        };
    });

    app.directive('disableable', function($parse){
        return {
            restrict: 'C',
            link: function (scope, elem, attrs) {
                scope.$watch('disableIt', function (val) {
                    if (!val) {
                        elem.addClass('disabled');
                        elem.css('cursor', 'default');
                        elem.bind('click', function(e) {
                            e.preventDefault();
                        });
                    }
                    else {
                        elem.removeClass('disabled');
                        elem.css('cursor', 'pointer');
                        if (typeof elem.attr('ng-click') === 'undefined')
                           elem.unbind('click');
                    }
                });
            }
        };
    });

提前致谢

2 个答案:

答案 0 :(得分:1)

你所说的行为是通过制作

来实现的
"disableIt || tellAboutIt()"

"disableIt && tellAboutIt()" 

在我在jsFiddle中找到的html部分。

答案 1 :(得分:0)

你可以这样做: 假设您拥有范围中复选框的值

$scope.data.checkValue = false
$scope.data.url = "http://foo.com"

在你看来:

<a ng-show="data.checkValue" href="data.url">bla</a>
<p ng-show="!data.checkValue">{{data.url}}</p>