1

わかりました、角度のあるUIマスクディレクティブを使用しています。私が使用しているフィルターは、時間「99:99」のフィルターです

私がやっていることは、入力ボックスの ng-model を取得し、それを文字列に変換し、文字列をループして、2 番目の場所に ":" を追加してから、フォーマットされた文字列を返すことです。しかし、私がそれを行うと、関数から返された結果は拡張されます。

入力ボックスに 1212 と入力すると、UI マスクを使用すると、ボックスで 12:12 のように表示されます。関数を呼び出すと、この 12:12undefined が返されます...誰か助けてもらえますか?

http://jsfiddle.net/edgaramaro/KWMmX/

ここに私のコード: HTML:

<div ng-controller="MyCtrl">
    <input type="text" ui-mask="'99:99'" ng-model="time">{{time}}
    <br>{{convert(time)}}
</div>

JS ファイル:

function MyCtrl($scope) {
    $scope.time = '';

    $scope.convert = function (input) {
        var str = input + '';
        var counter = 0;
        var newStr = '';

        while (counter <= str.length) {
            if (counter === 2) 
               newStr += ':';
            newStr += str[counter];
            counter++;
        }

    return newStr;
}
4

1 に答える 1

1

それはあなたのconvert機能にあります。昔ながらの for ループを使用して、少し単純化できます。

私はあなたのフィドルを更新しました

また、問題のコードに対して行ったことは次のとおりです。

$scope.convert = function(str){
    if(!str) return;
    var counter = 0,
        newStr = '',
        max = Math.min(str.length, 4);
    for(var i = 0; i < max; i++) {
        if(i === 2) newStr += ':';
        newStr += str[i];
    }        
    return newStr;
}
于 2013-03-24T05:37:45.730 に答える