AngularJS终端指令不工作

AngularJS终端指令不工作,angularjs,angularjs-directive,Angularjs,Angularjs Directive,jsfiddle。 我一直在试验指令优先级和终端属性。我已经创建了一个具有优先级3、2和1的三个指令。主指令(最高优先级,优先级:3)有一个创建按钮的模板,单击该按钮将调用指令控制器上的方法。在我把terminal:true放在priority 2指令上之前,一切正常。由于某种原因导致按钮停止工作;主指令(优先级3)显示良好,但单击按钮不会执行任何操作。同样,以下是指令代码,以下是指令代码: myApp = angular.module('myApp', []) .directive('

jsfiddle。 我一直在试验指令优先级和终端属性。我已经创建了一个具有优先级3、2和1的三个指令。主指令(最高优先级,优先级:3)有一个创建按钮的模板,单击该按钮将调用指令控制器上的方法。在我把terminal:true放在priority 2指令上之前,一切正常。由于某种原因导致按钮停止工作;主指令(优先级3)显示良好,但单击按钮不会执行任何操作。同样,以下是指令代码,以下是指令代码:

myApp = angular.module('myApp', [])
    .directive('greeting', function() {
        return {
            restrict: 'E',
            replace: true,
            priority: 3,
            template: "<button class='btn' ng-click='sayHello()'>Say Hello</button>",
            controller: function($scope) {
                var greetings = ['hello'];
                $scope.sayHello = function() {
                    alert(greetings.join());
                }
                this.addGreeting = function(greeting) {
                    greetings.push(greeting);
                }
            }
        };
    })
    .directive('finnish', function() {
        return {
            restrict: 'A',
            priority: 2,
            terminal:true,
            require: 'greeting',
            link: function(scope, element, attrs, controller) {
                controller.addGreeting('hei');
            }
        };
    })
    .directive('hindi', function() {
        return {
            restrict: 'A',
            priority: 1,
            require: 'greeting',
            link: function(scope, element, attrs, controller) {
                controller.addGreeting('नमस्ते');
            }
        };
    });
myApp=angular.module('myApp',[])
.directive('问候语',函数()){
返回{
限制:'E',
替换:正确,
优先事项:3,
模板:“打招呼”,
控制器:功能($scope){
var问候语=['hello'];
$scope.sayHello=函数(){
警报(问候语.加入());
}
this.addGreeting=函数(问候语){
问候语。推送(问候语);
}
}
};
})
.指令('芬兰语',函数(){
返回{
限制:“A”,
优先事项:2,
终端:是的,
要求:'问候语',
链接:功能(范围、元素、属性、控制器){
controller.addGreeting('hei');
}
};
})
.directive('hindi',function(){
返回{
限制:“A”,
优先事项:1,
要求:'问候语',
链接:功能(范围、元素、属性、控制器){
controller.addGreeting('नमस्ते');
}
};
});
页面上的html如下所示:

<body ng-app="myApp">
    <greeting finnish hindi />
</body>

调试AngularJS代码(特别是applyDirectivesToNode)在您的
finnish
指令上设置
terminal:true
时,它看起来像是停止处理
ng click
(该指令本身设置为优先级0,低于优先级2)。因此,单击该按钮不起任何作用

指令的优先级分别更改为0、-1和-2,以避免终止
ng单击

myApp = angular.module('myApp', [])
    .directive('greeting', function() {
        return {
            restrict: 'E',
            replace: true,
            priority: 0,
            template: "<button class='btn' ng-click='sayHello()'>Say Hello</button>",
            controller: function($scope) {
                var greetings = ['hello'];
                $scope.sayHello = function() {
                    alert(greetings.join());
                }
                this.addGreeting = function(greeting) {
                    greetings.push(greeting);
                }
            }
        };
    })
    .directive('finnish', function() {
        return {
            restrict: 'A',
            priority: -1,
            terminal:true,
            require: 'greeting',
            link: function(scope, element, attrs, controller) {
                controller.addGreeting('hei');
            }
        };
    })
    .directive('hindi', function() {
        return {
            restrict: 'A',
            priority: -2,
            require: 'greeting',
            link: function(scope, element, attrs, controller) {
                controller.addGreeting('नमस्ते');
            }
        };
    });
myApp=angular.module('myApp',[])
.directive('问候语',函数()){
返回{
限制:'E',
替换:正确,
优先级:0,
模板:“打招呼”,
控制器:功能($scope){
var问候语=['hello'];
$scope.sayHello=函数(){
警报(问候语.加入());
}
this.addGreeting=函数(问候语){
问候语。推送(问候语);
}
}
};
})
.指令('芬兰语',函数(){
返回{
限制:“A”,
优先次序:-1,
终端:是的,
要求:'问候语',
链接:功能(范围、元素、属性、控制器){
controller.addGreeting('hei');
}
};
})
.directive('hindi',function(){
返回{
限制:“A”,
优先次序:-2,
要求:'问候语',
链接:功能(范围、元素、属性、控制器){
controller.addGreeting('नमस्ते');
}
};
});

@Jim Cooper,如果你使用Angular-1.2.1,你会得到“你好,hie”作为点击按钮的输出。我认为这应该是输出。否则,问候语的优先级需要根据模板html中使用的指令的优先级来设置。如果我们在模板html中引入具有不同优先级的自定义指令以及一些内置的指令。

这完全有道理!感谢您深入了解!