javascript - Angular 1 : How to reflect ng-model errors on another element?

标签 javascript angularjs angularjs-ng-model

我有一个带有以下模板的指令

<div>
    <span class="label">My Label</span>
    <input ng-model="name" required>
</div>

我希望在输入字段无效时将标签涂成红色。

我该怎么做?

目前我有另一个指令将所有错误从 ngModelCtrl 同步到包装 div

 <div add-all-errors>
   ... 
 </div>

指令的链接函数做这样的事情:

const ngmodel = $element.find('[ng-model]').controller('ngModel');
$scope.$watch(()=>ngmodel.$error, addAllClasses, true); 

addAllClasses 只是确保正确的类出现在元素上。

我也试过只添加相同的 ng-model

  <div ng-model="name">
  ...
  </div>

但是没有看到那里的类(class)..

有更好的方法吗?

最佳答案

这就是我们使用 angularjs 形式的原因......我真的不确定为什么人们反对使用一个非常方便的功能。

我为你做了一个plunker。 https://plnkr.co/edit/bGOcQjWzlRq2aTYZUYNm?p=preview

<form name="form">
    <span ng-class="{red: form.name.$invalid}">Name:</span>
    <input name="name" ng-model="name" required>
</form>

对正在发生的事情有更多的了解。 form 被 angularjs 通过它的名字神奇地自动添加到作用域中。在本例中,我将其命名为 form,但它可以是任何名称。

现在 form 是一个 ngForm 对象,并通过名称属性将所有输入字段添加到其中。这样我们就可以通过 form.name 得到另一个类似于 ngForm 对象的对象。然后我们可以在 ng-class 中使用 $invalid$valid 属性。

ngForm 非常强大,加载了许多很酷的属性和方法。只需调用 console.log(scope.form); 您需要输入一个方法并将其添加到 ng-change 以查看更新。

关于javascript - Angular 1 : How to reflect ng-model errors on another element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45362395/

相关文章:

javascript - 使表格中的所有单元格具有相同的宽度等于最宽的单元格宽度

javascript - then() 返回值或 Promise.resolve 有什么区别

javascript - 使用 ng-model 按 (key, val) 对中的键进行过滤

angularjs - 如何在 Angular 中创建动态 ng-model

javascript - Angular 9 : Unable to redirect to a specific route in angular app after redirecting from an external url

javascript - Google map 标记自定义上下文菜单

javascript - 尝试运行应用程序模块 angularjs 时没有错误的空白页面

AngularJS ng-options 将所选项目作为对象

javascript - Lint 警告 : parseInt missing radix parameter

angularjs - 为什么在 ngClick 之后,missing-on-timeout 不适用于 ui-bootstrap 的警报指令?