angularjs组件绑定参数检查

时间:2018-02-28 10:53:48

标签: javascript angularjs angularjs-directive angularjs-components

有没有办法在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>

例如,您想通过调用测试标记进行更改。

1 个答案:

答案 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});
        };