当前位置: 首页 > 面试题库 >

指令定义对象的“要求”是什么?

鲁昕
2023-03-14
问题内容

require-
要求将另一个控制器传递给当前的指令链接功能。require会传入指令控制器的名称。如果找不到此类控制器,则会引发错误。该名称可以带有以下前缀:

  • ?-不要提出错误。这使得require依赖关系是可选的。
  • ^-还要在父元素上查找控制器。

以上是官方文档的定义。这里的歧义恰恰是“指令控制器”。

以angularjs-ui引导项目中的tabs指令为例。

angular.module('ui.bootstrap.tabs', [])
.controller('TabsController', ['$scope', '$element', function($scope, $element) {
  ... // omitted for simplicity
}])
.directive('tabs', function() {
  return {
    restrict: 'EA',
    transclude: true,
    scope: {},
    controller: 'TabsController',
    templateUrl: 'template/tabs/tabs.html',
    replace: true
  };
})
.directive('pane', ['$parse', function($parse) {
  return {
    require: '^tabs',
    restrict: 'EA',
    transclude: true,
    scope:{
      heading:'@'
    },
    link: function(scope, element, attrs, tabsCtrl) {
      ... // omitted for simplicity
    },
    templateUrl: 'template/tabs/pane.html',
    replace: true
  };
}]);

pane指令有require: '^tabs',其中,tabs是它的父元素上的指令的名称,而附接到该指令的控制器的名称是TabsController。从我自己对上述定义的解释来看,它本来应该require: '^TabsController'不是require: '^tabs',这显然是错误的。请告诉我我的理解力中缺少什么。


问题答案:

文档中的这个特定主题确实令人困惑,但是似乎很奇怪,这一切都是有道理的。

理解此定义背后的逻辑的关键是要理解“指令控制器”是指指令的 控制器实例, 而不是控制器工厂。

按照标签的示例,在tabs创建元素时,TabsController还会创建的新实例并将其附加到该特定元素数据,例如:

tabElement.data('$tabsController', tabsControllerInstance)

require: '^tabs'所述上pane元件基本上是针对该特定控制器实例(请求tabsControllerInstance)母体上使用tabs元件。



 类似资料:
  • 创建自定义指令 第一步,创建一个自定义命令类文件,新建application/common/command/Hello.php <?php namespace app\common\command; use think\console\Command; use think\console\Input; use think\console\input\Argument; use think\con

  • 自定义指令可以使用 macro 指令来定义, 这是模板设计者所关心的内容。 Java程序员若不想在模板中实现定义指令,而是在Java语言中实现指令的定义, 这时可以使用 freemarker.template.TemplateDirectiveModel 类来扩展 (请参考 后续章节)。 基本内容 宏是有一个变量名的模板片段。可以在模板中使用宏作为自定义指令, 这样就能进行重复性的工作。例如,创建

  • 问题内容: 指令可以是布尔值或对象,后者在此处显示: 但是它没有被记录的事实引起了疑问。为什么要首先制作功能?有有用的方案吗? 尽管bindToController 并非主要用于此目的,但有趣的是,现在如何将其 用作属性来填补1.5和2.0之间的空白,而绑定仍未使用。 问题答案: 只是偶然发现了这个PR,这是很有解释性的。 我不确定在和中使用两个不同的绑定是否有实际的好处。但最终,绑定也带入了原型

  • 本文向大家介绍什么是JSP指令?,包括了什么是JSP指令?的使用技巧和注意事项,需要的朋友参考一下 JSP指令影响Servlet类的整体结构。它通常具有以下形式- 指令标记有三种类型- 序号 指令与说明 1 <%@ page ...%> 定义与页面相关的属性,例如脚本语言,错误页面和缓冲要求。 2 <%@ include ...%> 在翻译阶段包含文件。 3 <%@ taglib ...%> 声明

  • 问题内容: 我花了很多时间阅读AngularJS文档和一些教程,对于文档的难懂性,我感到很惊讶。 我有一个简单的,可以回答的问题,对于其他希望使用AngularJS的人也可能有用: 什么是AngularJS指令? 某个地方应该有一个简单,精确的指令定义,但是AngularJS网站提供了这些令人惊讶的无用定义: 在主页上: 指令是AngularJS中可用的独特而强大的功能。指令可让您发明特定于您的应

  • 所以我和一位面试官(你的标准人力资源经理)谈了他们在面试中真正想要的东西,他提到了一些关于测试JVM指令知识的东西(以及其他很多东西)。 我不知道那是什么,但我以为他说的是字节码指令。 我做了一些研究,似乎在“JVM指令”上找不到任何东西,我只找到了字节码指令的引用,我已经知道了字节码指令。 例如:http://docs.oracle.com/javase/specs/jvms/se7/html/