Javascript AngularJS、模块对象和表单名称
我很难理解一些奇怪的问题,我会尽可能地解释: 例如,我得到了以下表格:Javascript AngularJS、模块对象和表单名称,javascript,angularjs,Javascript,Angularjs,我很难理解一些奇怪的问题,我会尽可能地解释: 例如,我得到了以下表格: <form method="post" action="index.htm" name="chat" novalidate> <label ng-show="chat.message.$error.pattern || chat.message.$error.required" for="message">Some error message</label>
<form method="post" action="index.htm" name="chat" novalidate>
<label ng-show="chat.message.$error.pattern || chat.message.$error.required" for="message">Some error message</label>
<textarea ng-required="true" type="text" maxlength="200" id="message" name="message" ng-pattern="patterns.chatMessage" ng-model="chat.message"></textarea>
<input type="submit" value="send" ng-disabled="chat.$invalid">
</form>
一些错误消息
请注意(因为我没有包括所有代码),ng pattern=“patterns.chatMessage”
patterns是$rootScope属性。
因此,当页面加载时,我希望chat.message.$error.pattern为false,但显然除非我将ng model=“其他对象,如client.message”
或设置ng model=“其他对象属性,如chat.comment”
当页面加载时,chat.message.$error.pattern
将为真,因此基本上如果modelobject.property与formName.textareaName相同,我就遇到了这个wierd问题
在排序中发生的情况是,chat.message.$error.pattern
从页面加载的那一刻起就被设置为true,如果有人能解释这里的问题,我将非常感谢,谢谢大家,祝你们度过愉快的一天。您不能在表单的name
标记和ng模型中使用相同的范围变量。
当您在angular中使用表单标记,并且该标记具有名称属性(例如,chat
)时,angular将在当前作用域上创建ngFormController的实例,并将该实例分配给name
属性中指定的变量(在本例中为chat
)
如果您使用相同的作用域变量chat
托管ng模型
,则ngFormController(在$scope.chat
上定义)将被您的模型覆盖,并产生不稳定的结果
因此,要解决问题,您需要重命名表单:
一些错误消息
谢谢你,Stewie,我现在明白了,你能给我一个链接,让我可以阅读更多关于ngFormController的信息吗。如果有疑问,请查看文档:和。