指令范围更新不更新控制器范围(AngularJs)

时间:2013-08-11 17:46:50

标签: angularjs angularjs-directive angularjs-scope

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

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

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

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

谢谢

1 个答案:

答案 0 :(得分:3)

这里有几个问题

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

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

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

  4. 除了这些具体要点之外,您编写此示例的方式表明对AngularJS中的一些基本概念存在误解。从头开始解释所有这些将超出这个答案的范围。我推荐reading up on directives,看看如何实现一些AngularJS内置指令。 You can see their sourcecode here

相关问题