创建AngularJS指令时'?ngModel'有什么意义?

时间:2014-01-02 19:08:16

标签: javascript angularjs angularjs-directive

我正在努力学习新的ng-book。有关过滤器的章节包含有关使用以下代码定义解析器的部分:

angular.module('myApp')
.directive('oneToTen', function() {
    return {
        require: '?ngModel';

我第一次看到'?ngModel'语法,而Angular API文档没有提供太多帮助。这种语法意味着什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

?是可选指令,^是父指令

http://docs.angularjs.org/api/ng.$compile

(no prefix) - Locate the required controller on the current element. Throw an error if not found.
? - Attempt to locate the required controller or pass null to the link fn if not found.
^ - Locate the required controller by searching the element's parents. Throw an error if not found.
?^ - Attempt to locate the required controller by searching the element's parents or pass null to the link fn if not found.

答案 1 :(得分:4)

必需可以解释为:

[?][^][directiveName]

它用于指定应该使用哪个指令控制器(“继承自”)。因此,例如,指令<column-item>需要找到父控制器<crtl-grid>。有几个符号可以与此属性一起使用,也可以组合使用:

^ =它表示寻找DOM以寻找指令的角度。

? =它表示该指令是可选的角度,如果未找到,则angular不会抛出异常。

所以?ngModel 表示需要与此指令一起声明ngModel。