Angular 参数数量未知的指令函数
Angular directive function with unknown number of parameters
我想使用这样的指令:
<my-directive some-method="method(arg0, arg1)"></my-directive>
指令看起来像:
angular.module('module').directive('myDirective', directive);
function directive() {
return {
restrict:'E',
scope: {
someMethod: '&'
},
template:'<div ng-click="someMethod()"></div>'
};
};
我想打电话给method(arg0, arg1)
当我打电话给someMethod()
。可能吗?
您可以将这两个参数绑定为模板中的属性。您可以在指令 link 函数中访问这两个参数。下面的示例我只是在控制台中显示这两个参数。
我的建议:不需要传递函数someMethod,可以在指令中定义一个someMethod函数。检查 link 会话中的注释代码。
指令:
angular.module('module').directive('myDirective', directive);
function directive() {
return {
restrict:'E',
scope: {
someMethod: '&',
firstArg: '=',
secondArg: '=',
},
link: function (scope, element, attr) {
console.log(scope.firstArg);
console.log(scope.secondArg);
/* function someMethod( arg0, arg1) {
* implement the someMethod based on your logic.
*
* }
*/
},
template:'<div ng-click="someMethod()"></div>
};
};
HTML:
<my-directive some-method="method" firstArg="arg0" secondArg="arg1"></my-directive>
根据您使用的 angular 版本,您所拥有的应该可以正常工作。参见 http://jsfiddle.net/TheSharpieOne/b7btgudo/
请注意,无需绑定参数。查看控制台日志以获取输出。
angular.module('app', [])
.controller("myCtrl", myCtrl)
.directive('myDirective', directive);
function directive() {
return {
restrict:'E',
scope: {
someMethod: '&'
},
template:'<div ng-click="someMethod()">Click Here</div>'
};
}
function myCtrl($scope){
$scope.myMethod = console.log.bind(console);
$scope.something = "something";
$scope.somethingElse = "somethingElse";
}
简单HTML:
<div ng-app="app" ng-controller="myCtrl">
<my-directive some-method="myMethod(something, somethingElse)"></my-directive>
</div>
如果您使用 ControllerAs 语法,您需要确保将 'scoped' functions/vars 放在 this
上,并在 HTML 中使用点符号.
我想使用这样的指令:
<my-directive some-method="method(arg0, arg1)"></my-directive>
指令看起来像:
angular.module('module').directive('myDirective', directive);
function directive() {
return {
restrict:'E',
scope: {
someMethod: '&'
},
template:'<div ng-click="someMethod()"></div>'
};
};
我想打电话给method(arg0, arg1)
当我打电话给someMethod()
。可能吗?
您可以将这两个参数绑定为模板中的属性。您可以在指令 link 函数中访问这两个参数。下面的示例我只是在控制台中显示这两个参数。
我的建议:不需要传递函数someMethod,可以在指令中定义一个someMethod函数。检查 link 会话中的注释代码。
指令:
angular.module('module').directive('myDirective', directive);
function directive() {
return {
restrict:'E',
scope: {
someMethod: '&',
firstArg: '=',
secondArg: '=',
},
link: function (scope, element, attr) {
console.log(scope.firstArg);
console.log(scope.secondArg);
/* function someMethod( arg0, arg1) {
* implement the someMethod based on your logic.
*
* }
*/
},
template:'<div ng-click="someMethod()"></div>
};
};
HTML:
<my-directive some-method="method" firstArg="arg0" secondArg="arg1"></my-directive>
根据您使用的 angular 版本,您所拥有的应该可以正常工作。参见 http://jsfiddle.net/TheSharpieOne/b7btgudo/
请注意,无需绑定参数。查看控制台日志以获取输出。
angular.module('app', [])
.controller("myCtrl", myCtrl)
.directive('myDirective', directive);
function directive() {
return {
restrict:'E',
scope: {
someMethod: '&'
},
template:'<div ng-click="someMethod()">Click Here</div>'
};
}
function myCtrl($scope){
$scope.myMethod = console.log.bind(console);
$scope.something = "something";
$scope.somethingElse = "somethingElse";
}
简单HTML:
<div ng-app="app" ng-controller="myCtrl">
<my-directive some-method="myMethod(something, somethingElse)"></my-directive>
</div>
如果您使用 ControllerAs 语法,您需要确保将 'scoped' functions/vars 放在 this
上,并在 HTML 中使用点符号.