在AngularJS中需要ngModel语法

时间:2016-06-29 13:38:41

标签: javascript angularjs angularjs-ng-model

我看到以下内容:

// my-directive.js    
return {
  require: 'ngModel',
  scope: {
    ngModel: '=',
  },
  controller: controller,
  link: myLink
};

// my-link.js
return function(scope, $element, attrs, modelController) {
  scope.onMyClick = function(event) {
    modelController.$setViewValue(getItem(event));
  }
};

// foo.html
<my-directive ng-model="myModel"></my-directive>

ng-model指令是否用于向声明myModel实例的外部作用域中的my-directive提供双向数据绑定?

这是在Angular 1.4中在指令和外部模型之间提供双向数据绑定的惯用方法吗?

除了将require: 'ngModel'指令实例的控制器实例注入链接函数ng-model之外,指令定义中的my-link是否做了什么?

最后,它是否使ng-model控制器的my-directive控制器可以使用?

1 个答案:

答案 0 :(得分:1)

这里有2个不同的东西 - ng-model作为指令,ngModel: '='作为属性。让我们拆分:

<my-directive ng-model="myModel" whatever="myModel"></my-directive>

return {
  require: 'ngModel',
  scope: {
    myModel: '=',
  },
  controller: controller,
  link: myLink
};
  

ng-model指令是否用于提供双向数据绑定   my -ode实例所在的外部作用域中的myModel   声明?

不,指令内的定义提供了双向绑定。 (whatever这里)

  

这是在a之间提供双向数据绑定的惯用方法吗?   Angular 1.4中的指令和外部模型?

你使用范围的一个:{ whatever : '='}是通常的方式。

  

是否需要:&#39; ngModel&#39;在指令定义中做任何事情   注入ng-model指令的控制器实例   实例进入链接功能my-link

不是那么多,如果你使用没有ngModel的指令,它会抛出错误。

  

最后,是否可以使用ng-model的控制器   my-directive控制器的使用范围?

不,它不会为您的范围添加任何内容。您只需访问注入的控制器。