有没有办法在angularjs中检查带有绑定的args? 我想通过事先检查args来改变处理。
angular.module('app').component('test', {
template: '<button data-ng-click="$ctrl.click();"></button>',
bindings: {
fn: '&',
},
controller: [
'$element',
function ($element) {
let $ctrl = this;
$ctrl.click = function () {
/*
let params={};
if(check($ctrl.fn,'message')){
params.message='Hi,';
}
if(check($ctrl.fn,'now')){
params.now=Date.now();
}
*/
$ctrl.fn({
message: 'Hi,',
now: Date.now()
});
};
}
]
});
<test data-fn="$ctrl.a(message);"></test>
<test data-fn="$ctrl.a(now);"></test>
<test data-fn="$ctrl.a(message,now);"></test>
例如,您想通过调用测试标记进行更改。
答案 0 :(得分:1)
我认为你想要的是可能的,但不是所希望的。 你需要以某种方式重新设计它,即:
<test fn="$ctrl.a(data);" fn-attrs="message"></test>
<test fn="$ctrl.a(data);" fn-attrs="now"></test>
<test fn="$ctrl.a(data);" fn-attrs="message,now"></test>
$ctrl.click = function () {
let attrs = $ctrl.fnAttrs.split(',');
let data = {};
if (attrs.indexOf('now') !== -1) {
data.now = 'smth';
}
if (attrs.indexOf('message') !== -1) {
data.message = '';
}
$ctrl.fn({ data: data});
};