码迷,mamicode.com
首页 > Web开发 > 详细

AngularJS form $addControl 注册控件control

时间:2014-12-21 18:02:28      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:angularjs   diretive   angularjs form addco   addcontrol   angularjs form添加控件   

需求背景:

在form中使用编写的某component directive时,想通过form‘s name来对form中控件进行操作,
如使用$invalid等来ng-disabled btn。

解决方案

通过使用form.$addControl将控件中的control注册到form中,既可使用form‘s name.xxx.$invalid方式来操作。

具体方法:

    tw.directive('nameForForm', function() {
      return {
        restrict: 'A',
        require: "?ngModel",
        link: function($scope, elem, attrs, ngModelCtrl) {
          
          var formController = elem.controller('form') || {
            $addControl: angular.noop
          };
          
          ngModelCtrl.$name = attrs.workflowNameForForm;
          formController.$addControl(ngModelCtrl);

          $scope.$on('$destroy', function() {
            formController.$removeControl(ngModelCtrl);
          });

          return true;
        }
      };
    });

使用方式:

component:

<div class="btn-group select select-block mbn">
  ...
  <input type="text" ng-show="false" ng-model="selectedValue" ng-required="selectRequired" 
      name-for-form="{{nameForForm}}" />
</div>

注意:在component中引入nameForForm,且scope中添加nameForForm: ‘@‘

页面使用component:

<tw-select-list name-for-form="city" ... />


参考:http://www.ngnice.com/posts/81c1eb92bfbde0

AngularJS form $addControl 注册控件control

标签:angularjs   diretive   angularjs form addco   addcontrol   angularjs form添加控件   

原文地址:http://blog.csdn.net/hai8902882/article/details/42061495

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!