2015-09-02 2 views
3

Я новичок angularjs, извините, если я спросил глупый вопрос.

function getCams(callback){ 
    var media_list = []; 
    MediaStreamTrack.getSources(function(sourceInfos){ 
    var i=0; 
    while(i!=sourceInfos.length){ 
     if (sourceInfos[i].kind == 'video'){ 
     var temp = []; 
     temp.push(sourceInfos[i].id); 
     temp.push(sourceInfos[i].label); 
     media_list.push(temp); 
     } 
     i++; 
    } 
    callback(media_list); 
    }); 
} 
var app = angular.module('myApp', []).config(function($interpolateProvider){ 
    $interpolateProvider.startSymbol('{[{').endSymbol('}]}'); 
}); 
app.controller('myCtrl', function($scope, $interval) { 
    $scope.cams = []; 
    var checkcams = getCams(function(media_list){ 
    $scope.cams=media_list; 
    $scope.$apply(); 
    console.log("test"); 
    }); 
    $interval(checkcams, 10000); 
}); 

Выше код, откуда я пытаюсь получить количество кулачков, подключенных к системе, и пытаюсь обновить то же самое в угловых JS с использованием функции обратного вызова, в этой строке

$interval(checkcams, 10000); 

Я пытаюсь вызвать эту функцию через каждые 10 секунд, но эта функция запускается только один раз после загрузки страницы и не запускается через каждые 10 секунд.

Я уже рассматриваю этот вопрос, он не поможет мне. $interval not running, angularjs

+0

'getCams' не возвращается ничего, тем' $ interval' не работает. Это ожидаемое поведение. – Satpal

+0

Итак, как правильно переписать этот код, чтобы точно обновить угловую область js? –

ответ

1

getCams ничего не возвращает, поэтому $interval не работает. Это ожидаемое поведение.

Вы можете переписать код, как

//Wrap getCams call in a function 
var checkcams = function(){ 
    getCams(function(media_list){ 
     $scope.cams=media_list; 
     $scope.$apply(); 
     console.log("test"); 
    }); 
} 

//Call it when view is launched 
checkcams(); 

//set Interval 
$interval(checkcams, 10000); 
+0

Итак, только одна строка отличается от этого кода, что именно эта строка здесь делает? checkcams(); Я хочу знать концепцию. –

+0

@SheeshMohsin. Только одна строка не отличается, я включил функцию функции getCams в функцию, а затем передал ссылку этой функции на интервал. прочитайте мои комментарии inline – Satpal

+0

Да, давайте, позвольте мне попробовать –

0

Делая это

var checkcams = getCams(function(media_list){ 
$scope.cams=media_list; 
$scope.$apply(); 
console.log("test"); 

});

Вы установили контрольные ячейки как переменную любых возвратов getCams, а не функцию.

Попробуйте вместо

function checkcams() { 
    getCams(function(media_list){ 
     $scope.cams=media_list; 
     $scope.$apply(); 
     console.log("test"); 
    }); 
} 
$interval(checkcams, 10000); 
Смежные вопросы