?^^ 用于 Angular JS 1.x 组件

?^^ used in in Angular JS 1.x Component

我正在研究 Angular JS 1.x(我知道 FW 已经过时了:))我注意到以下约定在组件配置中经常使用。

require: {
      componentContoller1: '^componentContoller1',
    }, 

我知道我们要求 angular 实例化 componentContoller1 的控制器并将其绑定到当前组件中的 属性,但我也注意到遵循约定

require: {
          componentContoller1: '?^^componentContoller1',
        }, 

谁能告诉我这里使用 ?^^ 有什么区别,我试过 google 和 angular 文档,但无法弄清楚。非常感谢任何帮助。

完成配置或设置会像

angular.module('moduleName').component('componentName',{
templateUrl: "path to template",
require: {
          componentContoller1: '?^^componentContoller1',
         },
controller(){ //code }
})

来自官方文档(https://docs.angularjs.org/api/ng/service/$compile#-require-)

  • (无前缀) - 在当前元素上找到所需的控制器。 如果找不到则抛出错误。
  • ? - 尝试找到所需的控制器,如果找不到则将 null 传递给 link fn。
  • ^ - 通过搜索 元素及其父元素 找到所需的控制器。如果找不到则抛出错误。
  • ^^ - 通过搜索元素的父元素 找到所需的控制器。如果找不到则抛出错误。
  • ?^ - 尝试通过搜索 元素及其父元素 或将 null 传递给 [=47= 来定位所需的控制器] fn 如果找不到。
  • ?^^ - 尝试通过搜索 元素的父元素 来定位所需的控制器,或者将 null 传递给 link fn 如果找不到。