如何设置form.FormController

时间:2014-08-21 19:20:12

标签: angularjs angularjs-directive

我正在创建自定义输入指令。我的目标是实现form.FormController行为与<input>

的任何其他ng-require="true"元素相同
.directive('myinput', function($window, $location, $sce, $dropdown) {
  return {
    restrict: 'A',
    require: '^form',
    scope: {
      model: '=myModel'
    },
    link: function postLink(scope, element, attr, formCtrl) {
         scope.$watch('model', function(newValue, oldValue) {
              if (newValue) {             
                  formCtrl.$setValidity(attr.myModel, true);  
              } else {
                  formCtrl.$setValidity(attr.myModel, false);
              }
         }, true);
    }
}

以上示例正常工作form[myModel].$valid变为true或false,具体取决于myModel值。但我想要的是form[myModel].$error.required成为现实。

我可以实现这种行为吗?

1 个答案:

答案 0 :(得分:1)

$ setValidity方法的第一个参数是验证器令牌,所以你可以这样做:

/* 
   Point first to your input field -> formCtrl[attr.myModel] 
   and after that set the type of validator token: 'required' in your example 
*/
formCtrl[attr.myModel].$setValidity('required', true); 

检查此示例使用内置必需指令和自定义指令:

http://jsfiddle.net/oua78v19/10/