0

我有一个关于 angularjs 的问题,我在输入上创建了一个工厂和一个指令。在我的指令中,当输入值发生变化时,我想更新控制器值。但事实上,我是我控制器中的一个事件迟到了。我自己解释:

  • 当我在输入上粘贴“A”时,我的父控制器值不会改变
  • 如果我录制“B”,我的父控制器值将是“A”
  • 如果我录制“C”,我的父控制器值将是“AB”......

我创建了一个 plinkr 来演示我的问题:

http://plnkr.co/edit/h0r0Gu7VqvWkkgshQtRC?p=preview

谢谢

4

1 回答 1

3

这里有几件事不对

  1. 不要调用你自己的属性ng-modelngModel已用于将 ModelController 附加到表单域。您不能简单地将相同的属性用于不同的目的,并在事情发生冲突时感到惊讶:)

  2. ngModel-Directive 已经负责将您的输入字段值绑定到范围上的属性。无需使用element.keydown.

  3. 即使在 element.keydown 中所做的操作是有效的,您也需要将整个回调包装起来,scope.$apply()以便可以在整个应用程序中反映更改。这是您观察到的延迟的主要原因。

除了这些具体点之外,您编写此示例的方式表明对 AngularJS 中的一些基本概念存在误解。从头开始解释所有这些将超出此答案的范围。我建议阅读指令并查看一些 AngularJS 内置指令是如何实现的。你可以在这里查看他们的源代码

于 2013-08-11T18:35:12.247 回答