Getting Error: [$parse:syntax] while using ng-class

Getting Error: [$parse:syntax] while using ng-class

我正在编写自定义表单验证,使用 ng-class 来突出必填字段,语法是:

<div class="form-group"
    ng-class="{'has-error': dc.{{fname}}.nedatt({{fname}}.username)}">
    <input class="form-control" name="username" type="text" placeholder="Username"
           ng-required="true" ng-model="f1username"/>
           <span class="help-block" ng-show="{{fname}}.username.$error.required">Required</span>
</div>

对于 ng 类,我得到:

Error: [$parse:syntax]                  
http://errors.angularjs.org/1.3.3/$parse/syntax?p0=.&p1=not%20a%20primary%20expression&p2=1&p3=.username.%24error.required&p4=.username.%24error.required

为了帮助块我得到:

SyntaxError: Unexpected token ;

实际上 fname 是要替换的表单名称,所​​以我在 {{}} 中使用。请帮忙,我卡住了。

你不能像那样在 ng-class 中绑定 angular 表达式。您应该改用 javascript 表示法。这意味着:

<div class="form-group"
    ng-class="{'has-error': dc[fname].nedatt(getFormObject(fname).name)">
</div>

看起来您正在尝试动态化您用来检查名称的对象 属性。不幸的是你不能这样做,对象 "must" 是固定的,而不是字符串。出于这个原因,我建议在您的控制器或指令中调用一个 returns 正确对象的函数,然后用它做任何您需要的事情。

对于 ng-show 我会实现类似的东西。请记住,它不会被字符串解析,而是直接评估(并且在 javascript {{foo}} 中是不正确的语法)