动态初始化ng-model指令

时间:2014-04-30 07:44:45

标签: angularjs controller directive

我正在根据输入的类型动态构建一个带角度的表单:

<div ng-controller="formController" ng-repeat="field in formFields" ng-switch="field.type">
    <div ng-switch-when="text">
        <!-- Something -->
    </div>

    <div ng-switch-when="dropdown">
        <myDirective my-data="field.param" ng-model="field.model"></myDirective>
    </div>
</div>

我的指令有两个问题,它构建了一个自定义下拉输入:

  1. Ng-model指令将名称field.model作为纯文本插入,而我希望attributs ng-model="field.model"将替换为field.model中包含的值。卷曲括号似乎在这里不起作用。有什么想法吗?

  2. 如何让ng-model值在我的表单控制器和自定义指令的控制器中都可访问?

  3. 字段对象的例子:

    {
        label : "Name",
        model : "employeeName",
        type : "dropdown",
        param : {
            dropdownArray : result,
            dropdownName : 'Nom',
            dropdownFieldValue : 'nameUUID',
            dropdownVisibleValue : [ 'employeeSS', 'employeeName' ]
        }    
    }
    

    然后在我的控制器中,我应该能够使用:$scope.employeeName访问此下拉列表值。

1 个答案:

答案 0 :(得分:1)

  1. 听起来您正在通过提供给指令中field.model函数的属性输入参数访问link。相反,您应该通过范围变量访问它。

    link: function(scope, element, attributes) {
      // attributes.ngModel will yield 'field.model'
      // scope.ngModel will contain the actual value of field.model
    }
    
  2. 如果您没有明确定义指令的隔离范围,那么分配给ng-model的{​​{1}}应该在您的指令中通过范围变量提供,如上所述。

    field.model
  3. 希望有所帮助。