首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语法错误:ng-messages=‘{field}.$error’

语法错误:ng-messages=‘{field}.$error’
EN

Stack Overflow用户
提问于 2015-06-24 08:27:18
回答 2查看 1.3K关注 0票数 1

我收到以下错误

语法错误:从{field}.$error开始的表达式{field}}.$error列2处的令牌'{‘无效键。

当我尝试运行以下代码时(form-field.html)

代码语言:javascript
复制
<div class='row form-group' ng-form="{{field}}" ng-class="{ 'has-error': {{field}}.$dirty && {{field}}.$invalid }">
    <label class='col-sm-2 control-label'> {{ field | labelCase }} <span ng-if='required'>*</span></label>
    <div class='col-sm-6' ng-switch='required'>

        <input ng-switch-when='true' ng-model='record[field][0]' type='{{record[field][1]}}' class='form-control' required ng-change='update()' ng-blur='blurUpdate()' />

        <div class='input-group' ng-switch-default>
            <input ng-model='record[field][0]' type='{{record[field][1]}}' class='form-control' ng-change='update()' ng-blur='blurUpdate()' />
            <span class='input-group-btn'>
                <button class='btn btn-default' ng-click='remove(field)'><span class='glyphicon glyphicon-remove-circle'></span></button> 
            </span>
        </div>
    </div>
***PROBLEM CODE LINE BELOW***
    <div class='col-sm-4 has-error' ng-show='{{field}}.$dirty && {{field}}.$invalid' ng-messages='{{field}}.$error'>
        <p class='control-label' ng-message='required'> {{ field | labelCase }} is required. </p>
        <p class='control-label' ng-repeat='(k, v) in types' ng-message='{{k}}'> {{ field | labelCase }} {{v[1]}}</p>
    </div>
</div>

这是替换以下代码中的指令的代码:

代码语言:javascript
复制
<form-field record='contact' field='firstName' live='false' required='true'></form-field>

问题显然是角不像ng-messages={{field}}.$error,我可以通过将它更改为

代码语言:javascript
复制
ng-messages='field.$error'

但是,下一段中的错误消息将不会显示。这段代码来自于2014年9月发布的TutsPlus从零开始构建一个Web。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-24 17:55:41

出现此错误的原因可能是您使用的是角版本1.4.1;如果您遵循使用bower安装角消息的教程,也安装了角消息1.4.1。因为在角消息1.4.1中,ng消息不再正确地解释其属性值(即angular.js github上的issue#11616 )。

我从@gkalpak中学到的解决方案是:

代码语言:javascript
复制
<div class='col-sm-4 has-error' ng-show='{{field}}.$dirty && {{field}}.$invalid' ng-messages="this.$eval(field)['$error']">
票数 3
EN

Stack Overflow用户

发布于 2015-06-24 08:57:12

删除ng-showng-messages中的双大括号,您不需要它们,因为它们都期望有表达式。

这应该是可行的:

代码语言:javascript
复制
<div class='col-sm-4 has-error' 
    ng-show='field.$dirty && field.$invalid'
    ng-messages='field.$error'>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31021464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档