Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng在指令中单击不';行不通_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript ng在指令中单击不';行不通

Javascript ng在指令中单击不';行不通,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我想在单击复选框时执行一个函数,但什么也没发生 当我将sendMediaToScreen函数放在链接(scope.sendMediaToScreen())中时,该函数可以工作,因此作用域可以使用 .directive('uxEmbedVideo', ['$compile','myURL', function( $compile, myURL ) { return { restrict: "E", replace: true, scope:

我想在单击复选框时执行一个函数,但什么也没发生

当我将
sendMediaToScreen
函数放在链接(
scope.sendMediaToScreen()
)中时,该函数可以工作,因此
作用域可以使用

.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>

问题在于您的
指令的使用


您正在将
roomManager.sendMediaToScreen({clientId:user.clientId,from:'producer'})的结果绑定到
范围。将媒体发送到screen
,而不是传入回调

问题在于您的
指令的使用


您正在将
roomManager.sendMediaToScreen({clientId:user.clientId,from:'producer'})的结果绑定到
范围。将媒体发送到screen
,而不是传入回调

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

指令中的

移除->替换:真

在模板中

<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>


谢谢

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

指令中的

移除->替换:真

在模板中

<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>


谢谢

您能提供fiddle/plunkr吗?您的意思是,
roomManager.sendMediaToScreen
未执行?指令中的绑定在哪里?您应该将元素绑定到click事件。是的,但是当我将scope.sendMediaToScreen()放在链接的指令中时,该函数立即执行。您的设置有问题,发布的代码似乎工作正常:您能提供fiddle/plunkr吗?您的意思是,
roomManager.sendMediaToScreen
未执行?指令中的绑定在哪里?您应该将元素绑定到click事件。是的,但是当我将scope.sendMediaToScreen()放在链接的指令中时,该函数立即执行。您的设置有问题,发布的代码似乎工作正常:oO。。。好的,但是你能给我举个小例子吗,我不明白,谢谢你似乎不明白
&
配置的目的。OP使用的方式是完全正确的。事实上,发布的代码工作正常,所以问题出在OP的某个设置项目中。看到它工作了吗:哦。。。好的,但是你能给我举个小例子吗,我不明白,谢谢你似乎不明白
&
配置的目的。OP使用的方式是完全正确的。事实上,发布的代码工作正常,所以问题出在OP的某个设置项目中。看到它工作了吗