Javascript 为什么AngularJS向服务器生成的输出添加额外的类?
我正在生成(通过Jade+Express.js+Node.js)一个HTML页面,其中我正在设置Javascript 为什么AngularJS向服务器生成的输出添加额外的类?,javascript,angularjs,node.js,express,pug,Javascript,Angularjs,Node.js,Express,Pug,我正在生成(通过Jade+Express.js+Node.js)一个HTML页面,其中我正在设置输入[text]元素的值。但是,即使该值设置正确(通过查看源代码验证;FF中的Ctrl+U),界面仍会显示一个空白文本框,检查FF中的元素会显示添加到该input[text]元素的额外AngularJS类 Jade模板中的相应行: input(type="text", class="form-control", tabindex=1, id="episodeVal", ng-model="epName
输入[text]
元素的值。但是,即使该值设置正确(通过查看源代码验证;FF中的Ctrl+U),界面仍会显示一个空白文本框,检查FF中的元素会显示添加到该input[text]
元素的额外AngularJS类
Jade模板中的相应行:
input(type="text", class="form-control", tabindex=1, id="episodeVal", ng-model="epName", value="#{epName}")
Jade的输出,通过Node.js生成(与预期完全一致):
Firefox的“Inspect元素”显示的“Computed”(正确的单词?)输出(显示额外添加的AngularJS类):
为什么AngularJS要添加这些额外的类?我认为这是阻止浏览器显示为输入[文本]
设置的值的原因,对吗
如果需要任何额外的信息,请告诉我
更新1:刚刚注意到,封闭表单也有额外的ng pristite
和ng valid
应用于它),并且FF没有额外的类不会影响行为
这些类用于描述表单的状态。请参阅上的文档,了解这些类的意义
至于您的问题,即使您设置了value属性,由于您使用的是ng model=“epName”
,因此$scope中的任何内容。epName
将在输入上设置您不需要在角度中设置值,输入将自动显示您的模型在JS中的值。因此,如果JS中的epModel等于“someValue”,则输入值将自动设置为该值
因此,与其设置输入值,不如在javascript中设置它(如果您还没有设置的话)对我有效的最终解决方案是使用ng init
初始化epName
的值(Jade模板语法片段):
其中输出HTML(片段):
在输入
标签上
感谢@Chandermani为我指明了正确的方向。我没有将$scope.epName
的值设置为任何值。如何让输入[text]
的值
显示?我无法在服务器上设置$scope.epName
的值…由于ng模型用于支持双向绑定,因此需要使用要显示的值初始化epName
。无法使用输入的value属性对其进行初始化。
<input type="text" tabindex="1" id="episodeVal" ng-model="epName" value="Arbit" class="form-control">
<input tabindex="1" id="episodeVal" ng-model="epName" value="Arbit" class="form-control ng-pristine ng-valid ng-touched" type="text">
ng-init="epName = \"#{epName}\";"
ng-init="epName = "New One";"