2014-04-30 122 views
1

我動態構建與角度的不同類型的輸入形式:動態初始化NG-模型指令

<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. 伍模型指令interprated名稱field.model爲純文本,而我想attributs ng-model="field.model"將被包含入field.model值替換。大括號似乎不在這裏工作。任何想法?

  2. 如何讓我的表單控制器和我的自定義指令的控制器都可以訪問ng-model的值?

字段對象的例:

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

然後在我的控制器,我應該能夠訪問此下拉值:$scope.employeeName

+0

字段對象是什麼樣的?你認爲在飛行中創造它嗎? –

+0

@MohammadSepahvand我只是添加一個這個對象的例子 – Fractaliste

回答

1
  1. 這聽起來像你所訪問通過提供給您的指令中link功能屬性的輸入參數field.model。相反,你應該通過範圍變量來訪問它。

    link: function(scope, element, attributes) { 
        // attributes.ngModel will yield 'field.model' 
        // scope.ngModel will contain the actual value of field.model 
    } 
    
  2. 如果沒有明確定義你的指令的分離範圍,然後ng-model分配給field.model通過範圍變量正如我上面提到應該在你的指令可用。

    scope: false // This is the default 
    
    // Define an isolate scope with field.model available through scope.ngModel 
    scope: { 
        ngModel: '=' 
    } 
    

希望有所幫助。