angularjs组件绑定参数检查

问题描述 投票:0回答:1

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

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

javascript angularjs angularjs-directive angularjs-components
1个回答
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});
        };
© www.soinside.com 2019 - 2024. All rights reserved.