angularjs组件绑定参数检查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angularjs组件绑定参数检查相关的知识,希望对你有一定的参考价值。

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

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

答案

我认为你想要的是可能的,但不是所希望的。你需要以某种方式重新设计它,即:

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

以上是关于angularjs组件绑定参数检查的主要内容,如果未能解决你的问题,请参考以下文章

初入AngularJS基础门

angularjs脏检查

Angularjs双向绑定

AngularJS

VUE JS 使用组件实现双向绑定

AngularJS入门学习笔记一