2015-06-02 73 views
0

我有一個指令,總是放在裏面<form>的元素包裝形式元素(input/select/etc),讓我們假設指令被稱爲wrapper方式來訪問元件控制器(如ngModel和形式)

<form> 
    <something> 
    <wrapper> 
     <input /> 
    </wrapper> 
    </something> 
</form> 

而且從這個指令中我需要訪問formControllerngModelController。我知道我可以在包裝的指令定義對象中使用require: ^form,但我仍然需要訪問ngModelController。我發現兩種方法來實現它:

childFormControl.controller('ngModel') 
childFormControl.data('$ngModelController') 
// also for controller I could use this, instead of require 
childFormControl.closest('form').controller('form') 
childFormControl.closest('form').data('$formController') 

我的問題是:它認爲一個黑客使用controllerdata方法來訪問控制器或者是它的安全,並視爲公共 API的使用情況如何?我沒有在Angular文檔中找到任何有關此方法的示例。

+0

您將有機會獲得ngModelController如果添加另一個控制器(表單控制器)到您的包裝指令 – gr3g

回答

0
<body ng-controller="ngModelController "> 

<form> 
    <something> 
    <wrapper> 
     <input /> 
    </wrapper> 
    </something> 
</form> 

</body> 

JS文件

(function(){ 

var app = angular.module('ngModelController ', function(){ 
    //Your main controller 
    }); 

app.directive('wrapper', function(){ 

    return { 
     restrict : 'E', 
     controller : function(){ 
     //Your form controller actions 
     }, 
     controllerAs : 'formController' 
    }; 
}); 
})(); 
相關問題