Я хочу сбросить $scope.event
до []
, если limit
больше $scope.dynamic
, поэтому ниже код не имеет значения $scope.event
Любая идея, где я принимаю к сведению ошибку?как сбросить значение массива, когда динамическое значение достигает предела?
main.html
<ul style="list-style: none;">
<li ng-repeat="message in event track by $index | limitTo:500" ng-class="{lastItem: $last}"><span><strong>Log:</strong></span><span>{{message}}</span></li>
</ul>
ctrl.js
var limit = 5000;
$scope.event = [];
var totalLimit;
$scope.dynamic = this numeric value is changing based on data;
socket.on('ditConsumer', function(data) {
var obj = {
file: $scope.filename,
data: data
}
getByteLen(data);
safelyAdd({
id: $scope.event.length,
value: data
});
});
function safelyAdd(element) {
if (totalLimit > limit) {
$scope.event = []; //reset array if max size reached..
}
$scope.event.push(element); //then push new item..
console.log('array', $scope.event);
console.log('totalLimit', totalLimit);
}
получение $scope.dynamic
значение в этих функций ...
$scope.random = function(value) {
$scope.dynamic = value;
totalLimit = value;
$scope.downloadPercentage = parseFloat((value/$scope.maxBytes) * 100).toFixed(0);
console.log('current value-dynamic',$scope.dynamic);
};
function getByteLen(normal_val) {
// Force string type
normal_val = String(normal_val);
var byteLen = 0;
for (var i = 0; i < normal_val.length; i++) {
var c = normal_val.charCodeAt(i);
byteLen += c < (1 << 7) ? 1 :
c < (1 << 11) ? 2 :
c < (1 << 16) ? 3 :
c < (1 << 21) ? 4 :
c < (1 << 26) ? 5 :
c < (1 << 31) ? 6 : Number.NaN;
}
currentBytesSum = currentFileBytes.reduce(function(a, b) { return a + b; }, 0);
$scope.random(currentBytesSum);
formatBytes(currentBytesSum);
return byteLen;
}
function formatBytes(bytes,decimals) {
if(bytes == 0) return '0 Byte';
var k = 1000;
var dm = decimals + 1 || 3;
var sizes = ['Bytes', 'KB', 'MB'];
var i = Math.floor(Math.log(bytes)/Math.log(k));
var data = parseFloat((bytes/Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
console.log('sum of all the bytes', data);
$scope.currentBytes = data;
}
Что делает 'console.log ('array', $ scope.event);' output? –
Почему бы вам не поставить 'console.log (limit + '|' + $ scope.dynamic)' внутри safelyAdd и посмотреть, что это за значения. – Zach
'$ scope.event' значение напечатанный массив объекта, который должен быть сброшен, если он достигает' limit' – hussain