簡體   English   中英

如何在angularjs的開關盒內使用for循環?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM