2014-10-09 49 views
1

我想了解角度指令中链接函数的执行情况。但是,我陷入了一个非常简单的设置。以下是HTML代码:未找到所需的角度指令

<!doctype html> 
<html ng-app="demoApp"> 
    <body> 
    <div ng-controller="DemoController" class="container"> 
     <directiveone directivetwo ></directiveone> 
    </div> 
     <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> 
     <script src="app.js"></script> 
    </body> 
</html> 

“demoApp” 在app.js定义如下:

angular.module('demoApp', []) 
.controller("DemoController", function(){ 

}) 
.directive("directiveone", function(){ 
    var linker = function(scope, element, attrs){ 
     console.log("directiveone link called"); 
    }; 
    return { 
     link : linker 
    } 
}) 
.directive("directivetwo", function(){ 
    var linker = function(scope, element, attrs){ 
     console.log("directivetwo link called"); 
    }; 
    return { 
     require: "directiveone", 
     link : linker 
    }; 
}); 

当我运行这段代码,我得到的错误:

Controller 'directiveone', required by directive 'directivetwo', can't be found!

我无法找出这里的错误。文件表明它可能是一个错字,但对我来说并不明显。

回答

1

指令默认为仅属性。您的directiveone指令未被拾取 - 您需要在其定义中指定restrict: 'E',或将其应用为属性(<div directiveone directivetwo>...

+0

是的,文档说它默认为E和A. https://docs.angularjs .org/api/ng/service/$ compile#-restrict-但后来我意识到这个文档是针对v1.3.0的,我使用的是1.2.26。 – Vaibhav 2014-10-09 14:22:16