Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 click函数?_Javascript_Angularjs_Angularjs Directive_Angular Ui Bootstrap - Fatal编程技术网

Javascript 如何在指令中定义两个ng click函数?

Javascript 如何在指令中定义两个ng click函数?,javascript,angularjs,angularjs-directive,angular-ui-bootstrap,Javascript,Angularjs,Angularjs Directive,Angular Ui Bootstrap,这是我在模板中的代码 <button ng-click="{{backFunction}}" ng-show="{{backShow}}"> Back </button> <button ng-click="{{nextFunction}}" ng-show="{{nextShow}}"> Next </button> 视图代码(我使用指令的位置) 它将错误显示为语法错误:令牌“nextFunction”是意外的您应该接收带有

这是我在模板中的代码

    <button ng-click="{{backFunction}}" ng-show="{{backShow}}"> Back </button>
    <button ng-click="{{nextFunction}}" ng-show="{{nextShow}}"> Next </button>
视图代码(我使用指令的位置)



它将错误显示为
语法错误:令牌“nextFunction”是意外的

您应该接收带有&而不是@

如果需要双向绑定且不想设置$watch/$observe,还将接收show/hide with=的布尔值

directive('navigationButtons', function() {
    return {
        restrict: 'AE',
        templateUrl : 'angular/app/partials/navigationButtons.html',
        scope: {
            backFunction: '&',
            backShow: '=',
            nextFunction: '&',
            nextShow: '='
        }

        };
})
请在上查看此链接

编辑


另外,请在指令中查看此项

您的代码中有一些错误,首先,在模板中,您更改了短划线分隔的驼峰大小写名称,并删除了花括号

<button ng-click="backFunction()" ng-show="backShow"> Back </button>
<button ng-click="nextFunction()" ng-show="nextShow"> Next </button>
我创建了一个JSFIDLE,代码正常工作:


最好的

您正在用“@”定义隔离作用域,而一个指令只能有一个隔离作用域think@aokaddaocfalse,您可以有多个独立作用域。我做了这些更改,但它仍然显示相同的错误:-(请您设置plunker,我将尝试解决问题何时使用/不使用
{{}
?这取决于您使用的指令。如果指令需要字符串,则需要使用{{var}},但如果您的指令需要表达式,则不应使用{{}。例如:指令ngClick、ngShow、ngIf需要表达式,但指令ngSrc需要字符串。
directive('navigationButtons', function() {
    return {
        restrict: 'AE',
        templateUrl : 'angular/app/partials/navigationButtons.html',
        scope: {
            backFunction: '&',
            backShow: '=',
            nextFunction: '&',
            nextShow: '='
        }

        };
})
<button ng-click="backFunction()" ng-show="backShow"> Back </button>
<button ng-click="nextFunction()" ng-show="nextShow"> Next </button>
directive('navigationButtons', function() {
return {
    restrict: 'AE',
    templateUrl : 'angular/app/partials/navigationButtons.html',
    scope: {
        backFunction: '&',
        backShow: '@',
        nextFunction: '&',
        nextShow: '@'
    }
};