Javascript 属性自动聚焦的值不正确

Javascript 属性自动聚焦的值不正确,javascript,html,angularjs,autofocus,angular-template,Javascript,Html,Angularjs,Autofocus,Angular Template,我们正在使用用于HTML lints的包。它在幕后使用W3C,到目前为止,它在验证我们的角度模板方面做得很好 今天,它在检查从存储库中提取的最新更改时失败,错误如下: 正在验证src/login/login.html…错误[L37:C108] 坏值 {{regCodeRequired}}用于元素输入上的属性自动聚焦 以下是它失败的相关线路: <div class="auth-reg-code-block" ng-if="regCodeRequired"> <input

我们正在使用用于HTML lints的包。它在幕后使用W3C,到目前为止,它在验证我们的角度模板方面做得很好

今天,它在检查从存储库中提取的最新更改时失败,错误如下:

正在验证src/login/login.html…错误[L37:C108]

坏值 {{regCodeRequired}}用于元素输入上的属性自动聚焦

以下是它失败的相关线路:

<div class="auth-reg-code-block" ng-if="regCodeRequired">
    <input class="form-control" type="text" name="regCode" 
           id="regCode" ng-model="user.regCode" autofocus="{{regCodeRequired}}" 
           placeholder="Registration Code" required>
</div>

如果有任何指针,我们将不胜感激。

尝试在配置中显式地将angular选项设置为true(这将启用角度绑定的进程(摘要){{{},并且在验证html之前,应将{{regCodeRequired}}替换为变量regCodeRequired的值):

根据文件:

options.customattrs

类型:数组默认值:[]

在此处列出通过指令和其他方式创建的所有自定义属性。验证程序将忽略有关这些属性的警告


您可以使用*通配符,例如:“custom attrs-*”

根据规范,
自动聚焦属性是:

许多属性是布尔属性。出现 元素上的布尔属性表示真值,而 缺少该属性表示假值

如果属性存在,则其值必须为空字符串 或者是一个ASCII值,该值不区分大小写,与属性的 规范名称,不带前导或尾随空格

布尔属性上不允许值“true”和“false”。 要表示假值,必须省略该属性 总共

最后一段解释了验证器为什么会抱怨

换句话说,您可以替换

<div class="auth-reg-code-block" ng-if="regCodeRequired">
    <input class="form-control" type="text" name="regCode" 
           id="regCode" ng-model="user.regCode" autofocus="{{regCodeRequired}}" 
           placeholder="Registration Code" required>
</div>

与:




您可能会感兴趣。

为您提供两个健全性检查:您在文档中一次只指定了一个
autofocus
属性;您正在将属性值设置为“”(空字符串)或“自动对焦”(表示
true
),或者根本没有设置该值(例如
)(任何其他值都无效)。可能验证器与angular语法混淆了,因为它不需要显式值?我可能错了,但您是否尝试过
ng autofocus
@Cory谢谢您的输入<代码>自动对焦
仅在该输入上设置,并且该值被设置为
真/假
-至少,这是不对的。但是,这是静态分析,它无法知道scope变量的值是什么-我怀疑它不喜欢那里的角度语法。@Cory如果您能详细说明如何继续修复错误,这可能是一个合理的答案。非常感谢。看起来grunt html angular validate模块在angular摘要周期应用于模板之前正在运行验证,这就是为什么它试图验证未处理的语句
{{regCodeRequired}
,而不是已处理的值true或false。您能提供initConfig的代码吗?您是否检查了initConfig中的
options.angular
是否设置为true?首先,感谢您的帮助!这两个选项对我都不起作用——同样的错误。尽管如此,我希望看到的不仅是如何抑制错误,而且是关于
autofocus
的总体见解——据我所知,我们没有正确使用它。仅供参考,在
relaxerror
中添加
“元素输入上的属性自动聚焦”
有助于忽略错误。谢谢!如果我错了,请纠正我:因为此
regCodeRequired
绑定将被评估为true/false-我们正确地使用了
autofocus
。在这种情况下,您建议让验证器忽略错误吗?
autofocus
是一个布尔属性,就像
必需的属性一样。
autofocus=“true”
autofocus=“false”
都不正确;两者都将被解释为
自动对焦
属性存在导致输入自动对焦。由于输入在regCodeRequired为true时显示,因此可以安全地将
autofocus=“{{regCodeRequired}}}”替换为
autofocus
htmlangular: {
    options: {
        angular: true, //per documentation: Turns on ignoring of validation errors that are caused by AngularJS.
        relaxerror: [
            'Element head is missing a required instance of child element title.',
            'Attribute href without an explicit value seen.',
            '& did not start a character reference.',
            'not allowed on element form at this point.',
            'not allowed as child of element',
            'Element img is missing required attribute src.'
        ],
        reportpath: null
    },
    all: [
        "<%= app.src %>/*.html",
        "<%= app.src %>/**/*.html"
    ]
}
 options: {
        customattrs: ['autofocus']
     //...
 }
<div class="auth-reg-code-block" ng-if="regCodeRequired">
    <input class="form-control" type="text" name="regCode" 
           id="regCode" ng-model="user.regCode" autofocus="{{regCodeRequired}}" 
           placeholder="Registration Code" required>
</div>
<div class="auth-reg-code-block" ng-if="regCodeRequired">
    <input class="form-control" type="text" name="regCode" 
           id="regCode" ng-model="user.regCode" autofocus
           placeholder="Registration Code" required>
</div>