【发布时间】:2015-01-15 14:30:06
【问题描述】:
我正在进行一个项目,用户将在<form> 中填写一些 HTML <input>s,以便在表单下方生成一些预览输出。这是一个简化的例子:
http://plnkr.co/edit/64Okgv4Ncb5yL7jOM6Xt?p=preview
在每个字段都有值之前,我不想显示预览输出。实现这一点的一种方法(如上面 Plunker 中使用的)是通过ngShow directive:
<div class="container-fluid output" ng-show="event.name && event.date && event.category && event.location">
这不是太疯狂,但在这里我大大简化了我需要实现的实际逻辑。有多种特殊情况将决定是否显示预览。如果我坚持使用这种方法,表达式将在我的 HTML 中变成一团乱七八糟的 JavaScript 条件。
我知道的另一种方法是使用$watchCollection()(为简单起见,我将其称为$watch)。这是一个 Plunker,我在其中设置了 $watch 的等效项:
http://plnkr.co/edit/UPToOlQCZddJ2a1Ye1cq?p=preview
它的工作原理相同,但我担心这不是最有效或最有效的解决方案,在这种情况下,我不想养成它的习惯。我的理解是$watches 通常很昂贵,应该谨慎使用。
这引出了我的问题:
- 有没有比使用
$watch更好的方法? - 如果没有,我正在使用的
$watch是否可以修改以提高性能? - 我在这里使用
$watch是否过于谨慎?使用ngShow和表达式真的只是在幕后做同样的事情吗?
感谢您的任何反馈!
【问题讨论】:
标签: javascript html angularjs angularjs-directive angularjs-scope