Javascript &引用;要求;Angular指令的DDO选项在应该时不会抛出错误

Javascript &引用;要求;Angular指令的DDO选项在应该时不会抛出错误,javascript,angularjs,angularjs-directive,require,Javascript,Angularjs,Angularjs Directive,Require,如果这是显而易见的,请原谅我,但我只是在学习诀窍 我一直在关注,试图理解AngularJS中的指令 建议如果未找到引用的指令,则指令的DDO的require选项应引发错误 我似乎不能让它抛出一个错误——这是我的代码(我使用的是v1.3.13) test.html: <body ng-app="Test"> <dir /> </body> var test = angular.module('Test', []); test.directive('d

如果这是显而易见的,请原谅我,但我只是在学习诀窍

我一直在关注,试图理解AngularJS中的指令

建议如果未找到引用的指令,则指令的DDO的require选项应引发错误

我似乎不能让它抛出一个错误——这是我的代码(我使用的是v1.3.13)

test.html

<body ng-app="Test">
    <dir />
</body>
var test = angular.module('Test', []);

test.directive('dir', function() {
    return {
        require: '99 red baloons',
        restrict: 'E',
        template: '<div>this should not work</div'
    };
});

test.js

<body ng-app="Test">
    <dir />
</body>
var test = angular.module('Test', []);

test.directive('dir', function() {
    return {
        require: '99 red baloons',
        restrict: 'E',
        template: '<div>this should not work</div'
    };
});
var test=angular.module('test',[]);
test.directive('dir',function(){
返回{
要求:“99个红色阳台”,
限制:'E',

template:“这不应该起作用因此这里存在两个问题,一个是代码,另一个(在我看来)是angular团队实现Require功能的不正确方式,我们需要解决这一问题

要使代码正常工作,您需要在link函数中引用所需的控制器,直到您这样做,它才会检查控制器是否存在于前面的元素中,并且不会引发异常。另一个问题是,您需要在一个指令中构建所需的控制器,以便链接api正常工作

angular团队不幸创建了默认行为(我不同意),即在指令的编译/呈现阶段,当它确定需要什么时,它仍然会呈现有错误的指令的转置/模板。因此,即使应用程序引发异常,它看起来仍在工作。若要解决此问题,可以在成功加载sub指令后将其链接函数中的作用域属性设置为true,您将在模板中的ng show中使用该属性。如果由于所需控制器不满足要求而导致链接从未运行,则模板将不会显示

以下是一个工作示例:

<body>
    <div main>
    </div>

    <script type="text/ng-template" id="main.html">
      <span>Hello, {{name}}!</span>
      <button ng-click="mainCtrl.log('Log Log Log, wondeful LOG!!!')">LOG</button>
      <sub></sub>
    </script>

    <script type="text/ng-template" id="sub.html">
      <div ng-show="loaded">{{name}} this should not work</div><div ng-transclude></div>
    </script>
</body>

感谢您指点方向-只有在DDO中没有链接功能时才会发生这种情况