1

好的,我正在使用角度 ui 掩码指令。我使用的过滤器是“99:99”时间的过滤器

我正在做的是抓取输入框的 ng 模型,将其转换为字符串,循环遍历字符串,在第二位之后我添加一个“:”,然后返回格式化的字符串。但是当我这样做时,从函数返回的结果在扩展上是正确的。

假设我在输入框中输入 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 回答