Angularjs需要asteriks

Angularjs需要asteriks,angularjs,Angularjs,我有一个大表单的指令,其中有些字段是必需的,有些字段不是。必填字段用required属性标记 我想用* 基本上是这样的:$input[required].prepend* 我对angularjs的理解仍然有限,这让我想到了指令的编译功能,但当我到达那里时,我就迷路了 免责声明:我的直觉告诉我,做这样的事情并不是真的有棱角的方式——这没关系,不管我最终是否使用了这种技术,我想知道如何去做。也就是说,我欢迎更多有角度的建议 谢谢大家! 每当DOM操作进入对话时,都需要一个指令。您希望在具有必需属性的

我有一个大表单的指令,其中有些字段是必需的,有些字段不是。必填字段用required属性标记

我想用* 基本上是这样的:$input[required].prepend*

我对angularjs的理解仍然有限,这让我想到了指令的编译功能,但当我到达那里时,我就迷路了

免责声明:我的直觉告诉我,做这样的事情并不是真的有棱角的方式——这没关系,不管我最终是否使用了这种技术,我想知道如何去做。也就是说,我欢迎更多有角度的建议


谢谢大家!

每当DOM操作进入对话时,都需要一个指令。您希望在具有必需属性的任何输入前加*符,因此您希望从必需属性创建一个指令。大概是这样的:

myModule.directive("required", function() {
   return {
       restrict: 'A', //only want it triggered for attributes
       compile: function(element) {
          //could add a check to make sure it's an input element if need be
           element.prepend("<span class='something'>*</span>");
       }
   }
}
图像右侧有一些20px的空间,以避免与选择下拉箭头重叠

committeeApp.directive("requiredStar", function ($compile) { 
return { 
    restrict: 'AE', 
    require: "^form", 
    link: function (scope, element, attrs, ctrl) { 
        var varName = ctrl.$name + "." + attrs.name + ".$error.required";           
        var a_input = angular.element($compile('<span style="color:red;" ng-show="' + varName + '" >&#10033;</span>')(scope)); 
        element.parent().prepend(a_input); 
    } 
}; 

如何将必需的属性添加到输入中?以声明方式。它在指令的HTML中。对,但它没有被动态添加?如果它不是动态的,那么您已经知道哪些字段是必需的,因此可以在添加必需属性的位置添加*。如果是动态的,那么我想知道它们是如何被动态添加的。不,它们不是动态添加的,你是对的,我可以自己去添加星号。我不想那样做。我想工作,所以标记所需内容的动作会自动显示星号。Yok,我知道你从哪里来,马上回答。整洁!和y。谢谢。这在中似乎不起作用,但在一种情况下效果很好。请给出建议。我不知道为什么会有不同。把一把小提琴放在一起,重现这个问题,我可以看一下。看起来像是您需要的输入。after和。before,而不是。prepend和。append。还不知道为什么。@americanslon,它不适用于输入,因为输入元素没有内容。即使您在此处手动写入内容,浏览器也会忽略这些内容。append和.prepend都在当前元素中插入内容,因此不适用于输入。同样的原因。正如您所指出的,您应该可以使用.after。虽然
committeeApp.directive("requiredStar", function ($compile) { 
return { 
    restrict: 'AE', 
    require: "^form", 
    link: function (scope, element, attrs, ctrl) { 
        var varName = ctrl.$name + "." + attrs.name + ".$error.required";           
        var a_input = angular.element($compile('<span style="color:red;" ng-show="' + varName + '" >&#10033;</span>')(scope)); 
        element.parent().prepend(a_input); 
    } 
};