2013-12-08 68 views
0

我創建了一個指令(itcValidationMessages),這將讓我顯示一個驗證消息,我把它的形式元件上作爲一個屬性象下面這樣:傳遞一些性質在AngularJS一個指令

<form id="register-form" novalidate ng-submit="register()" itc-validation-messages ... 

指令,我如上所述,遍歷表單中的所有輸入元素,並在任何人有無效狀態時顯示錯誤消息。

我存儲在單獨的文件驗證消息(因爲可以有很多他們的,我想是i8n所以我從指令分開他們準備)是這樣的:

angular.module('models.ValidationMessages', []).constant("ValidationMessages", { 
validationMessages: { 
    required: 'Value is required!', 
    email: 'You should enter a valid email address!', 
    minlength: 'Enter more characters!', 
    maxlength: 'You have entered to many characters!' 
} 

} );

將這些消息保持不變是否正確?

我會爲每個驗證默認的消息,但我想讓添加自定義消息爲每個輸入例如爲:

<input type="password" minlength-message="Your password should has at least 3 characters" 

一個什麼是做到這一點的最好方法是什麼? 因爲爲什麼我使用類似上面的屬性(minlength-message),我無法使用$observe從我的指令中訪問它。 我不想聲明一個對象並將這些自定義消息放在一個地方,因爲我應該爲每個消息添加一個輸入名稱以識別它們屬於哪個輸入。 所以我試圖找到一些方便和根據藝術解決方案。

我不需要在itcValidationMessages指令中指定一個獨立的範圍,我不希望每個驗證器都有一個單獨的指令,例如minlengthMessage將特定的驗證消息傳遞給我的指令,該指令應顯示此消息(itcValidationMessages)。

回答

1

這裏是如何從指令訪問數據爲例:

var myModule = angular.module('myModule', []) 
    .directive('myComponent', function() { 
     return { 
      restrict:'E', 
      scope:{ 
       minlengthMessage:'@' 
      }   
     }; 
    }) 

所以,現在你可以從

$scope.minlengthMessage 
+0

感謝您的回答,但是這不是我的意思。我已經澄清了一下我的描述,對不起,如果我感到困惑。 –

+0

我不想有另一個指令,因爲我有一個表單元素。我必須以某種方式將這些驗證消息與每個輸入連接起來,並通過我的指令訪問它們。 –

1

您也可以使用傳遞給向鏈路功能ATTRS的字符串。

下面是一個例子:

.directive('minlength', function() { 
    return { 
      restrict: 'EA', 
      link: function ($scope, $element, $attrs) { 
       var myDirectiveParam = $attrs.minlengthMessage; 
      } 
    }; 
}) 

而在你的HTML:

<input minlength minlength-message="Your message here.." /> 
+0

謝謝你的回答,但這不是我的意思。我澄清了一下我的描述,對不起,如果我是一個混亂。關鍵是我希望在表單元素和每個輸入連接的許多消息上有一個指令。 –

+0

順便說一句。你爲什麼在注入鏈接函數時使用美元符號? –