Javascript 角度指令未绑定到视图

Javascript 角度指令未绑定到视图,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,为什么我的角度指令不一定要查看 (function() { 'use strict'; app.directive('projectSearchModal', projectSearchModal); projectSearchModal.$inject = ['$modal', '$scope', 'ProjectService']; function projectSearchModal($modal, $scope, ProjectService) {

为什么我的角度指令不一定要查看

(function() {
    'use strict';

    app.directive('projectSearchModal', projectSearchModal);

    projectSearchModal.$inject = ['$modal', '$scope', 'ProjectService'];

    function projectSearchModal($modal, $scope, ProjectService) {
        // Usage:
        //     <projectSearch></projectSearch>
        // Creates:
        // 
        var directive = {
            link: link,
            restrict: 'A',
            scope: {
                project: '=',
                finishCallback: '=',
                comment: '='
            }
        };
        return directive;

        function link(scope, element, attrs) {}
})()
(函数(){
"严格使用",;
应用指令(“projectSearchModal”,projectSearchModal);
projectSearchModal.$inject=['$modal','$scope','ProjectService'];
函数projectSearchModal($modal,$scope,ProjectService){
//用法:
//     
//创建:
// 
var指令={
链接:链接,
限制:“A”,
范围:{
项目:“=”,
finishCallback:“=”,
注释:'='
}
};
返回指令;
函数链接(范围、元素、属性){}
})()
我这样称呼它:

<button project-search-modal="" project="project" finish-callback="wipeProjectInfoFromComment" comment="currentstakeholdercomment"
                                                     class="btn btn-primary"><i class="glyphicon glyphicon-search"></i> Search Projects</button>
搜索项目

指令确实进入了浏览器,但没有被执行(即,我在链接定义上放置了一个断点,但它从未被命中)

指令的问题(除了缺少
}
,我猜是复制粘贴错误)是您试图将不存在的服务
$scope
注入指令。这没有意义,因为
$scope
不是可共享的服务,您可以注入指令/其他服务,因为它与特定的HTMLElement绑定。所以角度误差

您不需要
$scope
,因为在link函数中已经有一个可用的

正确的指令定义:

(function() {
    'use strict';

    app.directive('projectSearchModal', projectSearchModal);

    function projectSearchModal($modal, ProjectService) {
        var directive = {
            link: link,
            restrict: 'A',
            scope: {
                project: '=',
                finishCallback: '=',
                comment: '='
            }
        };
        return directive;

        function link(scope, element, attrs) {
            console.log('link');
        }
    }

    projectSearchModal.$inject = ['$modal', 'ProjectService'];
})();

好的,结果证明我没有在正确的MVC布局页面中添加模块(包含指令)(有很多模块在这个项目中浮动)。

我认为问题是“项目搜索模式=”“”,只要是“项目搜索模式”@shieldstroy不,这不是问题,另一种方式不起作用。谢谢你的回复。我之所以注入scope,是因为我想使用$scope函数($on、$emit、$broadcast等)。我假设这些函数在我的作用域上不可用,因为我将它声明为只有三个属性的对象。我一直认为$scope是一个提供正确范围的服务。为什么我可以将$scope注入控制器?这没有帮助。事实上,我的问题不在于角度是投掷错误。我的问题是angular什么都不做,既不抛出错误也不执行指令……如果它不执行指令,那么可能是您没有正确配置HTML。你能分享HTML源代码吗?我想知道了。我将发布一个答案。