我有一个关于 angularjs 的问题,我在输入上创建了一个工厂和一个指令。在我的指令中,当输入值发生变化时,我想更新控制器值。但事实上,我是我控制器中的一个事件迟到了。我自己解释:
- 当我在输入上粘贴“A”时,我的父控制器值不会改变
- 如果我录制“B”,我的父控制器值将是“A”
- 如果我录制“C”,我的父控制器值将是“AB”......
我创建了一个 plinkr 来演示我的问题:
http://plnkr.co/edit/h0r0Gu7VqvWkkgshQtRC?p=preview
谢谢
我有一个关于 angularjs 的问题,我在输入上创建了一个工厂和一个指令。在我的指令中,当输入值发生变化时,我想更新控制器值。但事实上,我是我控制器中的一个事件迟到了。我自己解释:
我创建了一个 plinkr 来演示我的问题:
http://plnkr.co/edit/h0r0Gu7VqvWkkgshQtRC?p=preview
谢谢
这里有几件事不对
不要调用你自己的属性ng-model
。ngModel
已用于将 ModelController 附加到表单域。您不能简单地将相同的属性用于不同的目的,并在事情发生冲突时感到惊讶:)
ngModel-Directive 已经负责将您的输入字段值绑定到范围上的属性。无需使用element.keydown
.
即使您在 element.keydown 中所做的操作是有效的,您也需要将整个回调包装起来,scope.$apply()
以便可以在整个应用程序中反映更改。这是您观察到的延迟的主要原因。
除了这些具体点之外,您编写此示例的方式表明对 AngularJS 中的一些基本概念存在误解。从头开始解释所有这些将超出此答案的范围。我建议阅读指令并查看一些 AngularJS 内置指令是如何实现的。你可以在这里查看他们的源代码。