我有一个与angularjs有关的问题,我在输入上创建了一个工厂和一个指令。在我的指令中,当输入值发生变化时,我想更新控制器值。但实际上,我是控制器后期的一件事。我解释一下自己:
我创建了一个plinkr来演示我的问题:
http://plnkr.co/edit/h0r0Gu7VqvWkkgshQtRC?p=preview
谢谢
答案 0 :(得分:3)
这里有几个问题
请勿调用您自己的属性ng-model
。 ngModel
已用于将ModelController附加到表单域。您不能简单地将相同的属性用于不同的目的,并在事情发生冲突时感到惊讶:)
ngModel-Directive已经负责将输入字段值绑定到作用域上的属性。无需使用element.keydown
。
即使如果你在element.keydown中所做的事情是有效的,你需要将整个回调包装在scope.$apply()
中,以便更改可以反映在整个应用程序中。这是您观察延迟的主要原因。
除了这些具体要点之外,您编写此示例的方式表明对AngularJS中的一些基本概念存在误解。从头开始解释所有这些将超出这个答案的范围。我推荐reading up on directives,看看如何实现一些AngularJS内置指令。 You can see their sourcecode here