我的应用程序中有一个非常简单的用例。当用户双击记录时,它将显示一个输入框,并在提交新文本后点击回车。这将更新记录。
我想要做的就是获取输入元素值和消防服务。
<input type="text" ng-model="updatedListTitle" ng-enter="updateList(list.id, updatedListTitle)">
正如您所看到的,我正在使用ngmodel来获取控制器中的数据。问题在于每次按键都会不必要地激发我所有的观察者(尽管我知道角度很快,你可以像1000观察者一样开火)。但只是使用jquery抓取元素会更有效率。
有没有更好的方法来处理这种情况,我真的不关心双向绑定
答案 0 :(得分:0)
嗯...,在我看来,你完成它的方式是完全惯用的角度,我不会开始微观优化它。 (记住“过早优化是所有邪恶的根源”以及Michael A. Jacksons关于优化和其他引用的规则 - http://en.wikipedia.org/wiki/Program_optimization)
不,我不认为没有jQuery(或至少jqLite或手动dom访问)有任何明智的方法。 如果你这样做,你应该将它封装在一个指令中(这可能是显式DOM访问/操作应该是唯一的地方)。
答案 1 :(得分:0)
你可以在这里使用ng-blur而不是ng-enter,然后检查模型是否脏,然后进行服务电话?
AngularJS在您使用ng-model的任何输入字段上设置CSS类ng-pristine和ng-dirty,并且您的控制器具有$ pristine和$ dirty属性,您可以检查该表单是否脏或不。
这可能会更加优化。我仍然会在指令中这样做。