简体   繁体   English

如何在给定条件的情况下禁用href?

[英]How to disable an href given a condition?

I have a link that I need to disable depending on the permission a user has. 我有一个链接,我需要根据用户的权限来禁用它。 Below is the htmn for the link: 以下是链接的htmn:

<div ng-repeat="userAgreement in journalist.userAgreements">
    <div class="row" ng-repeat="attachment in userAgreement.attachments">
        <div class="col-sm-12" style="color: #2a98d4">
            <ul style="margin-bottom: 0px; padding-left: 1.5em;">
                <li class="fa fa-check-circle" style="font-size: 1.1em; margin: 3px;">
                    <a target="_blank" href="{{attachment.url}}" ng-click="agreementPermission($event)" class="cursor-pointer" style="font-family: FranklinITCProLight">{{getAttachmentName(userAgreement.agreement, attachment)}}</a>
                </li>
            </ul>
        </div>
    </div>
</div>
<div ng-show="!hasAttachments">
    <div class="col-sm-12" style="color: #2a98d4">
        <ln code="journalist.completed.documents.empty" args=""></ln>
    </div>
</div>
</div>

(The ng-click doesn't work) ng-click不起作用)

Here is the js directive for that file: 这是该文件的js指令:

define(["app"], function (app) {
    return app.directive('completedAgreements',[
        function () {
            return {
                restrict: 'E',
                templateUrl: '/directives/completed-agreements.html',
                link: function ($scope, elm, attrs) {
                    $scope.hasAttachments = false;
                    $scope.getAttachmentName = function(agreement, attachment) {
                        $scope.hasAttachments = true;
                        if(attachment.templateId) {
                            return attachment.name;
                        } else {
                            if(agreement.type == 'DIRECT_DEPOSIT') {
                                return "Payment Documents"
                            } else {
                                var specialization = agreement.specialisation.toLowerCase();
                                return specialization.charAt(0).toUpperCase() + specialization.slice(1) + " Agreement";
                            }
                        }
                    }
                }
            };
        }
    ])
});

The function that is within the ng-click: ng-click中的函数:

$scope.agreementPermission = function(e) {
            if (!SecurityService.canViewAgreements()) {
                showError($uibModal, "You do not have permission to access this attachment. Please contact an administrator.", null, null, null, null, "Access Denied");
                e.preventDefault();
            }
        };

As I am new to javascript, I am not sure if this function is in the correct place. 由于我是javascript新手,因此不确定此函数是否在正确的位置。 It is an another controller file, should it be in the js directive for the html? 这是另一个控制器文件,应该在html的js指令中吗? So basically, when a user without permission clicks the link, the showError box will be triggered, if they do have permission, then the page will redirect to the link. 因此,基本上,当没有权限的用户单击链接时,将触发showError框,如果他们具有权限,则页面将重定向到该链接。 Any suggestions would be greatly appreciated! 任何建议将不胜感激! let me know if I should provide further information!:-) 让我知道是否需要提供更多信息!:-)

 a.disable{ pointer-events: none; } 
 <!--You can add css class to disable the link (anchor), example: --> <a ng-class="{'disable': isAvailable(product.id)}">see product</a> 

rewrite the tags <a> tag to <a disabled> 将标签<a>标签重写为<a disabled> <a> <a disabled>

see http://www.w3schools.com/tags/ref_attributes.asp 参见http://www.w3schools.com/tags/ref_attributes.asp

it should be editable through javascript as an object as well. 它也应该可以通过javascript作为对象进行编辑。 look for something like: 寻找类似的东西:

object = document.getElementById("MyElem");
object.disabled = true;

or 要么

object.active = false;
onclick="onClickFunc(event, {{ element.id or class }})"

function onClickFunc(event, somedata) {
    event.preventDefault(); // Stops the default behavior
    // ...
}

// event.preventDefault(); // event.preventDefault(); stops the default behavior of the link. 停止链接的默认行为。

Use button instead of link. 使用按钮代替链接。 Give it CSS class="btn btn-link"(Bootstrap). 给它CSS class =“ btn btn-link”(Bootstrap)。 Call the function agreementPermission on ng-click. 在ng-click上调用函数AgreementPermission。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM