ng-click in指令不起作用

时间:2016-03-23 13:30:39

标签: javascript angularjs angularjs-directive

我想在点击复选框时执行一个功能,但没有任何反应。

当我将sendMediaToScreen函数放入链接(scope.sendMediaToScreen())时,该函数可以正常工作,因此scope就可以了。

.directive('uxEmbedVideo', ['$compile','myURL', function( $compile, myURL ) {
    return {
        restrict: "E",
        replace: true,
        scope: {
            'clientId': '@',
            'sendMediaToScreen': '&',
            'rule': '=',
            'screenActivated' : '='
        },
        link: function( scope, element, attrs ){
        },
        templateUrl: myURL.getAppViewsPath() + '/partials/embed-video.html'
    };
}])

指令

<ux-embed-video
    rule="user.rules"
    screen-activated="room.parameters.screenActivated"
    send-media-to-screen="roomManager.sendMediaToScreen({ clientId : user.clientId, from: 'producer' })">
</ux-embed-video>

/partials/embed-video.html

<div class="ux-video-admin-controls" ng-if="rule === 'administrator'" >
    <input ng-if="screenActivated"
       restrict access="administrator"
       class="ux-admin-videoToScreen"
       type="checkbox"
       ng-click="sendMediaToScreen()"
       />
</div>

2 个答案:

答案 0 :(得分:0)

问题在于<ux-embed-video>指令的使用范围。

您将roomManager.sendMediaToScreen({ clientId : user.clientId, from: 'producer' })的结果绑定到scope.send-media-to-screen,而不是传递回调。

答案 1 :(得分:0)

我不知道为什么,但是像这样替换模板指令,现在它可以正常工作

指令中的

删除 - &gt;替换:true,

模板中的

<div class="ux-video-admin-controls" ng-if="rule === 'administrator' && screenActivated" >
    <input
       restrict access="administrator"
       class="ux-admin-videoToScreen"
       type="checkbox"
       ng-click="sendMediaToScreen()"
       />
</div>

谢谢