jcu*_*nod 29 angularjs angularjs-directive
我正在按照教程试图获得要求的指令ngModel
:
app.directive("contenteditable", function() {
return {
restrict: "A",
require: "ngModel",
/* etc. */
Run Code Online (Sandbox Code Playgroud)
这无法加载说:
无法找到指令'contenteditable'所需的控制器'ngModel'!
查看角度文档中的类似代码,我改变了这一require
行:
require: "?ngModel"
Run Code Online (Sandbox Code Playgroud)
现在它工作正常.我猜?
它是可选的,但这对我来说没有多大意义.什么是问号做(如果不明显)为什么它允许指令工作?
Igo*_*vić 41
这正是你所猜到的:?
使指令可选.
基本上,在定义指令要求时,您可以使用它们:
someDirective
:在同一元素上需要someDirective并将其传递给链接函数?someDirective
:将someDirective控制器(如果在相同元素上可用)传递给链接功能.如果不是,则传递null.^someDirective
:在其中一个父元素上需要someDirective并将其传递给链接函数.?^someDirective
:如果某个父元素可用,则将someDirective控制器传递给链接函数.如果不是,则传递null.如果你的指令需要多个其他指令,你可以使用相同的东西,但传递一个数组,如下所示:
require: ['firstRequiredDirective', '^secondRequiredDirective']
Run Code Online (Sandbox Code Playgroud)
这一次,您将获得传递给链接函数的必需指令控制器数组.
在您的情况下,如果具有您的contenteditable
指令的元素具有ngModel
,则ngModelController将传递给您的链接函数.
如果没有ngModel
指令,它将通过null
.
Eug*_*hel 31
只是为@Igor Pantovic添加更多关于AngularJS $编译指南^
前缀的答案:
(无前缀) - 在当前元素上找到所需的控制器.如果找不到则抛出错误.
? - 尝试找到所需的控制器或将null传递给链接fn(如果未找到).
- ^ - 通过搜索元素及其父元素来定位所需的控制器.如果找不到则抛出错误.
- ^^ - 通过搜索元素的父项找到所需的控制器.如果找不到则抛出错误.
- ?^ - 尝试通过搜索元素及其父元素来定位所需的控制器,或者如果未找到则将null传递给链接fn.
- ?^^ - 尝试通过搜索元素的父元素来定位所需的控制器,或者如果未找到则将null传递给链接fn.
归档时间: |
|
查看次数: |
8033 次 |
最近记录: |