【问题标题】:AngularJS ngModelController basic questionsAngularJS ngModelController 基本问题
【发布时间】:2013-06-11 23:13:55
【问题描述】:

在 ngModelController 示例的 Angular 文档中,javascript 文件显示:

angular.module('customControl', []).
    directive('contenteditable', function() {
        return {
            restrict: 'A', // only activate on element attribute
            require: '?ngModel', // get a hold of NgModelController
            ...

为什么“ngModel”指的是 NgModelController?为什么不是 "require: '?ngModelController" 从命名的角度来看似乎更合适。

另外,使用 $setViewValue() 函数更新模型与使用 $watch() 函数在指令范围内监视模型的变化有什么区别?

谢谢!

【问题讨论】:

  • 因为是命名约定,所以需要学习时期,和喷油器有关

标签: javascript angularjs angularjs-directive


【解决方案1】:

为什么“ngModel”指的是 NgModelController?为什么不是 "require: '?ngModelController" 从命名的角度来看似乎更合适。

因为require 属性用于要求控制器 指令。例如,ngModel 指令有一个controller 属性,该属性具有$setViewValue 和一些其他功能。如果您正在制作自定义指令,您可以为其创建一个控制器,然后其他指令可以通过说 require: '?yourDirective'require: '^yourDirective'require: 'yourDirective' 来访问它。

来自 Angular 文档:

controller - 控制器构造函数。控制器在预链接阶段之前被实例化,如果它们按名称请求它,它会与其他指令共享(参见 require 属性)。这允许指令相互通信并增强彼此的行为。

require - 要求将另一个控制器传递给当前指令链接函数。 require 需要传入指令控制器的名称。如果找不到这样的控制器,则会引发错误。

您可以阅读更多here

【讨论】:

    【解决方案2】:

    我们可以使用 ngModelController 将第三方插件与 AngularJS 应用程序集成,这里是我写的博客的链接,以示例详细解释这一点:

    Integrate third-party plug-in, with your AngularJS app using ngModelController

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 2023-03-21
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2012-03-17
      • 1970-01-01
      • 2011-05-27
      相关资源
      最近更新 更多