AngularJS form $addControl 注册控件control

需求背景:

在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

时间: 2024-08-26 10:52:23

AngularJS form $addControl 注册控件control的相关文章

regsvr32 命令小集注册OCX控件,注册控件(包括十几个举例)

Regsvr32 进程文件: regsvr32 or regsvr32.exe  进程名称: Microsoft DLL Registration Service  英文描述: regsvr32.exe is a processes belonging to the Windows OS and is used to register dynamic-link libraries and ActiveX controls in the registry. 中文描述:regsvr32.exe用于注

在注册控件时出现对DllRegisterServer的调用失败的解决办法

最近做了一个控件,在WIN7 32位机子上注册控件时出现如下提示: 这样的问题明白人一看就知道这是dll或ocx控件未正确注册的原因,但是怎样解决这个问题,确是比较棘手. 遇到这个问题的时候大家首先能想到的是手动注册该控件.一般有两种方法(1)调用系统本身自带的regsvr32.exe注册器进行注册,但是注册后发现提示注册错误,未能成功注册.这是什么原因呢?难道是没有管理员权限?可我明明是以管理员身份登录电脑的啊.然后便是发送该程序快捷方式到桌面,右键该快捷方式,单击"以管理员身份运行"

【问题:发现与解决】angularJs指令在dijit控件中的使用

  由于公司主要用的JS框架是DOJO,最近又运用了angularJs.因此,不可能避免的遇到dojo控件和angular指令(directive)共用时遇到的一些问题,问题如下: <input id="inheritCbx_modelPara" type="checkbox" data-dojo-type="dijit/form/CheckBox" ng-model="isInheritPara" ng-change=

一键注册控件的批处理(包含x86 和 x64)

@echo off if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86 if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto x64 exit :x64 copy *.* %SYSTEMROOT%\SysWOW64regsvr32 %SYSTEMROOT%\SysWOW64\VZLPRClientCtrl.ocx exit :x86 copy *.* %

AngularJS 文件上传控件 ng-file-upload

网上可以找到的 AngularJS 的文件上传控件有两个: angular-file-upload:https://github.com/nervgh/angular-file-upload ng-file-upload:https://github.com/danialfarid/ng-file-upload 这两个非常类似,连js文件的结构都是一样的.核心的js是.min.js,还都有一个-shim.min.js,用来支持上传进度条和上传暂停等高级功能. 按道理讲shim.js应该是可加可不

C# WinForm窗体 控件Control 的 Invalidate、Update、Refresh的区别

Control.Refresh - does an Control.Invalidate followed by Control.Update.Refresh: 强制控件使其工作区无效并立即重绘自己和任何子控件.== Invalidate Update Control.Invalidate - invalidates a specific region of the Control (defaults to entire client area) and causes a paint messa

js 注册控件的onclick事件

今天做了一个全选功能:1.点击全选,全部选中.选中状态再点击全选,全部取消选中2.点击成员,判断是否成员全部选中,true:全选为选中状态,false:全选为未选中状态. 使用js是比较麻烦的就是如何获取到成员对象集合,首先我们了解到获取控件的方法有几种:1.document.getElementById("控件ID") 获取指定的控件,因为根据HTML规范中ID是具有唯一性的.注意:在获取ASP.Net控件的ID时,使用<%=控件ID.ClientID%>2.docume

AngularJS自定义表单控件

<!doctype html> <html ng-app="myApp"> <head> <script src="G:\\Source\\Repos\\GWD\\Gridsum.WebDissector.Website.ZC\\Gridsum.WebDissector.Website.ZC\\Pages\\dist\\assets\\lib\\angularjs\\angular.js"></script>

C#注册控件处理程序(SetConsoleCtrlHandler)函数示例 控制台关闭事件改写

添加或删除应用程序定义的HandlerRoutine从调用进程的处理函数列表功能. Win32 API功能:添加或删除应用程序定义的HandlerRoutine从调用进程的处理函数列表功能.函数原型:BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, // 回调函数BOOL Add // 表示添加还是删除):返回值:BOOL类型参数参数HandlerRoutine:一个应用程序定义的指针HandlerRoutine 功能要添加或