angularJS在$ emit和$ on的帮助下验证输入字段

时间:2018-10-24 07:19:54

标签: angularjs angularjs-directive broadcast angularjs-controller emit

我正在创建一个Web应用程序,我要在其中验证一些输入字段

所以我使用$emit$on来使其简短

我创建了一个看起来像这样的指令

angular.module('myapp').directive('validateFields', function () {
    return function (scope, element, attrs) {
        scope.$on('validateInputFields', function (param) {
            if (param == undefined || param == null || param == '') {
                return true;
            } else {
                return false;
            }
        });
    }
});

我想执行此指令并根据结果返回true或false(我知道这是不正确的,但是我在指令和$ emit $ on上是新手)

我正在我的控制器中称呼它

$scope.$emit('validateInputFields', $scope.mddoh);

但这是打印对象

{name: "validateInputFields", targetScope: b, stopPropagation: ƒ, preventDefault: ƒ, defaultPrevented: false, …}

在我的场景中使用$ emit和$ on的最佳方法是什么

1 个答案:

答案 0 :(得分:0)

将控制器中的$scope.$emit更改为

$rootScope.$broadcast('validateInputFields', $scope.mddoh);

并在您的指令中将scope.$on更改为

$rootScope.$on

别忘了注入$rootScope