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: '@'
}
};