在Angular中ng-click vs watch

时间:2013-01-30 18:02:06

标签: javascript angularjs

我有一个加载JSON文件的指令,然后使用该数据创建HTML5画布图(即json数据包含文本,颜色,位置等内容)。我还有许多输入字段(文本,滑块等),允许用户操作绘图。我看到我可以$观察每个元素或使用ng-click并调用函数 - 是否有推荐的方法?

一些可能相关的说明:

  • 表单元素和画布都是同一指令模板的一部分
  • 表单元素响应onchange所以没有提交按钮
  • 检查每个表单元素值,然后转换然后修改json字符串。然后我调用一个刷新函数,用新数据重新加载我的画布。

我有可能以错误的方式接近这个......

1 个答案:

答案 0 :(得分:7)

因此,根据我的理解,用户可以对某些元素(在指令中)执行某些操作,并且每次触发这些事件时都必须执行某些操作。

$ watch的目的是每次特定变量的值发生变化时“观察”/做某事。 $scope.$watch('watchedVariable', onWatchedVariableChangedFn)其中onWatchedVariableChangedFn是一个函数。只有当值实际发生变化时才会触发此操作,而不管导致更改的原因。

另一方面,您可以将事件处理程序连接到标记属性,例如ng-click='onClickFn()'。这些会从UI元素上的操作中触发。 [另请注意,ng-click仅适用于可点击元素。您似乎有多个元素(文本,滑块等)。]

您可能必须查看究竟是什么原因导致这些值的更改/导致您重绘画布然后决定您想要的方式。

编辑:你可能想要考虑的第三个替代方案是在适用的情况下触发事件($ emit / $ broadcast)和处理($ on)这些事件。