2016-10-03 19 views
0

我正在寫一個Angular應用程序,它將從USB設備讀取磁條卡。當我刷卡時,我收到一個包含卡號的字符串。例如,;12345?,其中12345是卡號。去除ng-repeat過濾器中的字符?

我的應用程序使用的數據不包含這些「控制字符」,所以如果字符串以;開頭並以?結尾,我想將它們從搜索字符串中刪除。

當我寫一個自定義過濾器:

angular.module('app.filters', []) 

.filter('stripcardcontrolcharacters', function() { 
    return function(text) { 
    if(text.substring(0, 1) === ";" && text.substring(text.length - 1) === "?") { 
     return text.substring(1, text.length - 1); 
    } 
    }; 
}); 

是因爲我ng-repeat荷蘭國際集團一個數組,而不是我所搜索的字符串失敗。

我將如何得到我正在過濾的字符串並從中刪除字符?

編輯:目前的建議是使用過濾器來修改數組添加在控制字符,所以filter:可以找到它。我可能會用去了,但我還是很想知道,如果你可以通過

ng-repeat="user in users | stripcardcontrolcharacters ... 

寫這樣的過濾器

+0

1)您的過濾器沒有做任何事情。 2)你打算如何使用它? – Phil

+0

是出於測試目的,我只是想輸出字符串。在實際的過濾器中,我會測試;和?作爲第一個和最後一個字符。現在我試圖使用它:''和我的輸入標記如下所示:' DrFrankly

回答

0

你傳遞整個數組到過濾器如果這是怎麼你想要的工作,你需要把它當作一個陣列,例如

return function(textArray) { 
    var invalidChars = /\D/g; // just an example 
    return textArray.map(text => { 
     console.log(text); 
     return text.replace(invalidChars, ''); 
    }); 
} 
+0

是的,我可能需要直接修改數組,以便在控制字符中添加'filter:'可以找到他們。希望從字符串中去除字符,以便它能夠快速並強大地處理任何查詢的數據。 – DrFrankly

0

你可能會應用過濾器的陣列,而不是字符串本身。 請看下面的例子:

angular.module('test', []) 
    .controller('testController', function($scope){ 
    $scope.names = ['John Doe', 'Jane Doe']; 
    }) 
    // The test filter 
    .filter('strip', function(){ 
    return function(str) { 
     return str.substring(1, str.length - 1); 
    }; 
    }); 

這裏是如何使用它:

<body ng-app="test" ng-controller="testController"> 
    <p ng-repeat="name in names"> 
     {{name | strip }} 
    </p> 
</body> 

請注意,我將在那裏我用值過濾器,而不是在ng-repeat聲明。

And here is the working plunker

+0

因爲我打算使用這個值來過濾一個數組,而不是隻顯示一個數組,所以這對我不起作用。但它已經打開了我的眼睛,看看過濾器是如何工作的,所以謝謝你:) – DrFrankly