【问题标题】:Using the same directive more than once in the same form以相同的形式多次使用相同的指令
【发布时间】:2015-06-24 15:15:49
【问题描述】:

我在完成一项对我来说似乎微不足道的任务时遇到了麻烦,但我还没有把它做好。我有一个表格,在那个表格中我使用了一个名为 time-range 的自制指令。该指令有两个输入字段,用于开始日期和结束日期。稍后,在定义表单的视图中,我想使用类似于以下的代码验证每个字段:

<li ng-show="form.createAssignment.fromDateField.$error.dateinput">{{::$parent.lang.from_date | capitalize}} {{::$parent.lang.has_to_be_on_format}} {{::$parent.lang.yyyy_mm_dd}}</li>

好吧,这很好用,但仅用于验证表单中最后一个指令中的输入字段。如果我在第一个指令中输入错误,则表单无效(因此显示错误列表)但指定错误的文本不会显示,可能是因为最后一个指令中的输入是正确的。

所以,不知何故,我希望能够限定我所指的指令,可能是这样的:

<li ng-show="form.createAssignment.directive1.fromDateField.$error.dateinput">{{::$parent.lang.from_date | capitalize}} {{::$parent.lang.has_to_be_on_format}} {{::$parent.lang.yyyy_mm_dd}}</li> 

但是,我还没有成功。有没有人建议如何做到这一点?

【问题讨论】:

    标签: angularjs forms angularjs-directive


    【解决方案1】:

    ng-form 使用输入名称进行验证,因此如果您使用 ng-repeat 或重复指令,则很难针对特定输入。

    一个选项是使用 ng-form 指令,这意味着在表单内部创建一个内部表单。有很多关于如何做到这一点的指南。

    另一个选项是通过指令参数传递一个唯一的名称(前缀/后缀)。但遗憾的是变量名不会自动生效,需要在传入名称后重新编译模板。

    【讨论】:

    • 你是对的。我有一个导致问题的 ng-repeat 指令。引入 ng-form 似乎可以解决这个问题,但我可能不得不重新调整布局以直观地呈现错误。
    • 如果您在每个输入下都显示错误,那么它只是参数名称更改。如果它是集中式的(例如全部在顶部或底部),那么就不那么容易了>
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多