16

何らかの理由で、初期化された値がフィールドに表示されませんが、ng-pattern のない 2 番目のフィールドは機能します。何か案は?

    angular.module('app', []).controller('MainCtrl', function($scope) {
      $scope.widget = {title: 'abc', title2: 'abc'};
    });

    <div ng-app="app" ng-controller="MainCtrl">
     <input ng-model="widget.title" required ng-pattern="/[a-zA-Z]{4}[0-9]{6,6}[a-zA-Z0-9]{3}/">
     <br /><br />   
     input 1: {{ widget.title }}
     <br /><br />   
     <input ng-model="widget.title2" required>
     <br /><br />   
     input 2: {{ widget.title2 }}
    </div>

これがフィドル http://jsfiddle.net/wkzab/1/です

4

3 に答える 3

19

アップデート

私はそれを少し調べました(Angularを実際に使用したことはありません)。nameフォームと入力で属性を使用することにより、最新のJSFiddleに示されているようなエラーを取得できます。その形式は次のとおり{{formName.inputName.$error}}です。これは、ブール値に等しいパラメーターを持つオブジェクトを返します。正規表現にエラー{{form.title.$error.pattern}}があるtrue場合も同様です(エラーを表示します)。また、正規表現を次のようにクリーンアップしました(同じように動作します)/^[A-Z]{4}\d{6}[A-Z\d]{3}$/i


ng-pattern属性は、次の正規表現に基づいてフィールドの照合を試みます: /[a-zA-Z]{4}[0-9]{6,6}[a-zA-Z0-9]{3}/. これは、英字 4 文字、数字 6 文字、および英数字 3 文字に変換されます。一致するパターンがあれば、それが表示されます。

ng-pattern属性を削除するか、式をより具体的でないものに変更できるはずです。たとえば、このJSFiddleは、文字列全体が英数字である限り、任意の値を受け入れます。別のパターンでヘルプが必要な場合は、質問を更新してください。

于 2014-04-09T03:18:31.133 に答える