2014-09-02 104 views
0

我正在使用AngularJS構建一個Web應用程序,我有一個疑問,因爲我不知道什麼是實現使用輸入表單的指令的最佳方法。我有以下指令:對傳遞給指令的表單不起作用驗證AngularJS

angular.module('myApp').directive('personal', [function() { 
    return {   
     restrict: 'E', 
     scope : { 
      model : '=ngModel', 
      label : '@', 
     }, 
     require: '^form', 
     templateUrl : 'personal.html', 
     link: function (scope, iElement, iAttrs, ngModelController) {} 
    }; 
}]); 

personal.html

<input type="text" name="name{{label}}" ng-model="model.name" ng-pattern="/^[A-Za-z]*$/"> 
<div class="error-container" ng-show="data.name{{label}}.$invalid"> 
    <small class="error" ng-show="data.name{{label}}.$error.pattern">Invalid format</small> 
</div> 

的index.html

.... 
<form novalidate name="data"> 
    <personal label="personal" ng-model="general"></personal> 
    <!-- here I will need add more tags 'personal' ..is a requirement --> 
</form> 
... 

的形式呈現良好。但是..當輸入名稱{{label}}具有無效內容時,錯誤消息不會顯示(如果我將templateUrl內容放在index.html上,則工作正常)。

感謝您的提前。

回答

0

您的data.whatever在您的templateUrl中無法訪問表單控制器。您已創建隔離範圍,因此它無法訪問表單名稱=數據。我現在不在我的電腦上,所以我不能給你一些可靠的例子,但是請在表格控制器上閱讀。

+0

嗨馬克。感謝您的回答,我將範圍隔離開來,因爲我需要創建許多「個人」標籤,並且每個人都必須在輸入上使用不同的名稱,因爲我使用{{label}}(name =「name {{label }}「)。還有另一種形式可以做到這一點?感謝您的提前。 – Candres 2014-09-02 03:25:54