2016-05-31 58 views
0

我正在开发angularJS中的查询生成器。我正在定制angular-query-builderAngularJS - 从动态创建的元素调用函数

代码结构是(只有相关的上下文代码示出)

base.html文件

<query-builder group="filter.group"></query-builder> 

querybuilder.html

<select ng-options="t.name as t.name for t in fields" ng-model="rule.field" execute-change="setValidation()" class="form-control input-sm"><option value="">--Select Filter--</option></select> 

<select style="margin-left: 5px" ng-options="c.name as c.name for c in conditions" ng-model="rule.condition" class="form-control input-sm"></select> 

<input type="text" ng-model="rule.data" class="form-control input-sm condition-inp" /> 

controller.js

$scope.setValidation = function() { 
    console.log('Triggred') 
} 

directive.js

.directive('queryBuilder', ['$compile', function ($compile) { 
    return { 
     restrict: 'E', 
     scope: { 
      group: '=' 
     }, 
     templateUrl: 'querybuilder.html', 
     compile: function (element, attrs) { 
      var content, directive; 
      content = element.contents().remove(); 
      return function (scope, element, attrs) { 

       element.on('change', function (e) { 
        scope.$apply(attrs.executeChange); 
       }); 

      } 
     } 
    } 
}]); 

我要的是当在querybuilder.html下提到的首次下降,我需要验证添加到相应的输入框中选择一个项目。 即,如果选择的项目是日期,那么输入框必须是日期选择器,如果它是电话号码,那么输入框应该是整数。

我试图做的是使用controller.js中的setValidation函数但是该函数没有被触发。

回答

0

我希望这是与一个窗体的父母一起使用的,因为$ setValidity在命名表单上输入myFrom.nameOfInput。$ setValidity。

如果是这样,您可以将表单传递给指令或将validitor函数作为参数传递给指令,如范围,现在只需要组让它接受parentValidator,并让它成为父控制器中的一个函数,它设置有效性。