[英]how to use for loop inside the switch case in angularjs?
我使用 switch case 進行語音識別,這是代碼:
$scope.recog = function() {
var recognition = new SpeechRecognition();
recognition.onresult = function(event) {
$scope.filteredItems = $filter('filter')(datauser['data']['friends'], {nama : search}, false);
var result = event.results[0][0].transcript;
switch(result){
case 'login':
$scope.loginFn();
break;
case 'sign up':
$location.path('/register');
break;
case 'register':
$scope.registerFn();
break;
case 'cancel':
$scope.cancelregisterFn();
break;
//for (var i = 1; i < $scope.filteredItems.length; i++){
case 'chat with friend number ' + i:
$scope.chatWith(friend.userid , friend.nama);
break;
//}
case 'go to home':
$location.path('/home');
break;
case 'go to add friend':
$location.path('/addfriend');
break;
case 'go to friend request':
$location.path('/friendrequest');
break;
case 'go to pending request':
$location.path('/penddingrequest');
break;
case 'add':
$scope.addfriends();
break;
case 'send':
$scope.sendMessage();
break;
default:
alert(result);
alert(i);
break;
};
$scope.$apply()
};
recognition.start();
};
但是,我想在一種情況下使用for
as 循環,正如您所看到的,我已經將其作為命令,但是當我刪除//
它無法在我的應用程序中工作。 我可以在開關盒內使用 for 循環嗎? 我使用的循環是這樣的:
for (var i = 1; i < $scope.filteredItems.length; i++){
case 'chat with friend number ' + i:
$scope.chatWith(friend.userid , friend.nama);
break;
}
所以,如果我在循環中使用i
。 已經很詳細了嗎?
編輯
在i
,我會在情況下使用'chat with friend number ' + i:
是指數從朋友列表的長度,以及所有用戶都有不同數額的朋友,所以我不能把確切的數字,如5或6,我必須使用i < $scope.filteredItems.length
作為朋友總數。
根據您嘗試在無法工作的循環內創建動態切換案例的評論。
您可以做的是從switch
刪除整個場景,例如:
if (result && result.indexOf('chat with friend number') > -1) {
// do what is needed for this case with your loop
} else {
switch (result) {
// all the other cases shown
}
}
你可以嘗試這樣的事情:
switch(result){
case:
.
.
.
case default:
var text = "chat with friend number";
// Search if result is of type "chat with friend number" and find friend number.
var friend_no = result.indexOf(text)>-1?parseInt(result.replace(text,'')):-1
if(friend_no>-1){
// do your stuff
}
}
注意:以上將首先評估所有情況。 如果這種可能性太高,您應該嘗試@charlietfl 的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.