Angularjs 将事件绑定到链接函数中指令的子元素

Angularjs 将事件绑定到链接函数中指令的子元素,angularjs,angularjs-directive,angularjs-ng-repeat,Angularjs,Angularjs Directive,Angularjs Ng Repeat,需要将事件绑定到使用templateUrl中的ng repeat准备的指令的子级。 我正在尝试将事件绑定到链接函数中,但子项尚未准备就绪 这是你的电话号码 在这里,我想绑定单击li标记上的事件,该标记是用ng-repeat准备的。但是当执行链接时,li元素还没有准备好。 有人能帮忙吗。解决方案#1 使用angular ng click指令() 并在链接函数中侦听此事件: $scope.$on('onRepeatLast', function(scope, element, attrs){

需要将事件绑定到使用templateUrl中的ng repeat准备的指令的子级。 我正在尝试将事件绑定到
链接
函数中,但子项尚未准备就绪

这是你的电话号码

在这里,我想绑定
单击
li
标记上的
事件,该标记是用ng-repeat准备的。但是当执行
链接时,
li
元素还没有准备好。

有人能帮忙吗。

解决方案#1 使用angular ng click指令()

并在链接函数中侦听此事件:

$scope.$on('onRepeatLast', function(scope, element, attrs){
    // make what you want
    valuePopup.find('li').on('click',function(){
        valuePopup.hide();
    });
    valuePopup.find('keydown').on('click',function(){
        valuePopup.hide();
    });
});
也许对你有帮助

app.directive('gtmsCycleButton', function () {
    return{
        restrict: 'EA',
        link: function (scope, el, attrs) {

            scope.$watch(attrs.options, function(newVal, oldVal) {

                if (newVal === oldVal) return;

                var btn = $(el).find('.v-btn'),
                    valuePopup = $(el).find('.v-value-popup');

                btn.on('click', function() {
                    console.log('Button Clicked');
                    valuePopup.toggle().focus();
                });

                valuePopup.find('li').on('click', function() {
                    valuePopup.hide();
                });

                valuePopup.find('keydown').on('click', function() {
                    valuePopup.hide();
                });
            });            
        },
        templateUrl: 'temp1'
    }
});

我已经解决了角度$timeout的相同问题

链接:功能(范围、元素){
$timeout(函数(){
元素上('click','#Id',函数(){
log('第一个子级的事件处理程序内部)
})
})

}
最糟糕的方法是超时执行,但在您的位置,我会通过在li而不是在Parents中应用指令来执行。因为,我找不到任何其他解决方案,我倾向于遵循您的解决方案。但我想再等一段时间以获得任何替代解决方案,所以我不会将其标记为已接受的答案。如果找不到任何其他解决方案,我会将其标记为已接受。“错误:[jqLite:onargs]jqLite#on()不支持
选择器
事件数据
参数。请注意,这仅在包含jQuery时有效。否则,Angular使用不支持选择器参数的jqLite。
$scope.$on('onRepeatLast', function(scope, element, attrs){
    // make what you want
    valuePopup.find('li').on('click',function(){
        valuePopup.hide();
    });
    valuePopup.find('keydown').on('click',function(){
        valuePopup.hide();
    });
});
app.directive('gtmsCycleButton', function () {
    return{
        restrict: 'EA',
        link: function (scope, el, attrs) {

            scope.$watch(attrs.options, function(newVal, oldVal) {

                if (newVal === oldVal) return;

                var btn = $(el).find('.v-btn'),
                    valuePopup = $(el).find('.v-value-popup');

                btn.on('click', function() {
                    console.log('Button Clicked');
                    valuePopup.toggle().focus();
                });

                valuePopup.find('li').on('click', function() {
                    valuePopup.hide();
                });

                valuePopup.find('keydown').on('click', function() {
                    valuePopup.hide();
                });
            });            
        },
        templateUrl: 'temp1'
    }
});