【问题标题】:AngularJS validation and field name with square bracketsAngularJS 验证和带方括号的字段名称
【发布时间】:2014-04-15 11:58:56
【问题描述】:

我正在关注本教程http://scotch.io/tutorials/javascript/angularjs-form-validation,但我有带方括号的表单字段(例如 company_bundle_task[timeStart][date] - 由 Symfony2 呈现)并且对这些字段的验证不起作用,例如:

<span class="help-block" ng-show="company_bundle_task.company_bundle_task[timeStart][date].$invalid">Required</span>

或

<span class="help-block" ng-show="company_bundle_task.company_bundle_task[timeStart][date].$error.required">Required</span>

即使这些字段无效/空/等,它们也不会显示。

【问题讨论】:

  • 你能写出输入框的代码吗? symphony 渲染的 PHP 结果应该映射到“模型”上,而“名称”上的验证可能会有所不同。
  • 谢谢,看来您不需要 2 路数据绑定。我会回答并提供此信息。

标签: javascript angularjs validation symfony


【解决方案1】:

你必须用引号转义你的名字,因为 a.example 相当于 a['example'] 你可以写:

<span class="help-block" ng-show="company_bundle_task['company_bundle_task[timeStart][date]'].$error.required">Required</span>

【讨论】:

    【解决方案2】:

    Mati,您应该尝试使用函数而不是评估这么长的表达式...调用一个附加到您的作用域和控制器的简单函数并在其中正确评估此表达式....

    我通常不会尝试在那里写表达式,而是函数......

    问候

    【讨论】:

    • 但我应该什么时候调用它?提交表格后?我的解决方案的优点是它适用于焦点/模糊(只是动态的,你不必提交整个表单)
    • No.. U 应该调用 ng-show 中的函数,它会在页面被渲染时被评估.. 还有你在 ng-show 中添加的表达式,将是在页面渲染时进行评估。
    • 我的建议是在函数中添加这个表达式..然后在其中添加一个调试器并检查为什么这个表达式在你的情况下失败
    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    相关资源
    最近更新 更多