使用内部html的id属性创建angularjs指令,但仍然在外部html上使用id

 周周周大丨小姐想好好在家呆 发布于 2023-02-06 15:57

所以我创建了这个复选框指令,它由一个标签和输入元素组成.我想在指令上设置一个id属性,并将其设置为input元素的"id"和标签"for"属性.这工作正常,但问题是它仍然在外部html上,这是一个div,所以它打破了我的指令.我认为如果您将指令设置为replace:true,那么这将删除定义该指令的html.

该指令如下

angular.module('journal.directives', []).
  directive('fancyCheckbox', function(){
  return {
    restrict : 'EA', 
    replace : true,
    template : '
' + '' + '' + '
', scope : { colour : '@', id : '@', }, link : function(scope, elem, attrs){ var spotColourClass; var valid_colours = ['blue', 'green', 'gray', 'purple', 'blue', 'orange', 'charcoal', 'light', 'yellow', 'red']; if(valid_colours.indexOf(scope.colour) !== -1){ spotColourClass = scope.colour + "spot"; }else{ spotColourClass = 'greenspot'; } elem.addClass(spotColourClass); } }; });

当我把我的指令称为


它变成了

你看到"id"仍在外部div上,这不是我想要的.我以为这会被删除.所以我只需要在链接功能中手动删除它

希望有人能提供帮助

谢谢

1 个回答
  • 来自Angular指令指南:

    替换过程将所有属性/类从旧元素迁移到新元素.

    所以,你所看到的是预期的行为.

    而不是删除链接中的属性我只是创建一个新属性,例如check-id并像这样使用它:

    <fancy-checkbox colour="red" check-id="mycheckbox"></fancy-checkbox>
    

    将其添加到您的范围:

    checkId : '@', 
    

    并在您的模板中使用它:

    template : '<div class="fancyCheckbox">' +
           '<input type="checkbox" id="{{ checkId }}" />' +
           '<label for="{{ checkId }}" ></label>' +
           '</div>',
    

    演示小提琴

    2023-02-06 15:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有