2016-03-01 75 views
-1

我在我的cordova应用程序中构建了一个app.js。在这个模块中有语音识别,如$ scope.recog。在这个功能我要赶使用switch语句一句话,这是我的代码:如何在Angularjs中使用Switch语句

$scope.recog = function() { 
    var recognition = new SpeechRecognition(); 
    recognition.onresult = function(event) { 
    var result = event.results[0][0].transcript; 
    $scope.SwitchFuction = function (result){ 
     switch(result){ 
     case 'login': 
     $scope.loginFn(); 
      break; 
     case 'sign up': 
     $location.path('/register'); 
      break; 
     case 'register': 
     $scope.registerFn(); 
      break; 
     case 'cancel': 
     $scope.cancelregisterFn(); 
      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 'log out': 
     $scope.logout(); 
      break; 
     } 
    }; 
    $scope.$apply() 
    }; 
    recognition.start(); 
    }; 

的识别工作,但switch语句不工作我错写它还是有我错过了什么?感谢您的帮助

+0

你在哪里调用'$ scope.SwitchFunction(结果);'? – jnthnjns

+0

它的我的坏,对不起,我不应该使用该功能,谢谢 –

+0

我建议你使用'ui路由'而不是开关案件。您可以阅读有关'ui-route'的文档:https://github.com/angular-ui/ui-router –

回答

0

您的开关功能位于您未调用的另一个功能中。如果你想使用,那么你需要调用它

+0

或者删除'SwitchFunction()'并以程序方式运行开关盒。 – jnthnjns

+0

多数民众赞成我的不好,当我仰望这个问题http://stackoverflow.com/questions/34131341/how-to-write-switch-statement-in-angularjs-controller我虽然我也必须使该功能,谢谢你你的帮助,我将删除该功能 –

0

你没有正确调用SwitchFunction。这可能会帮助你。

$scope.SwitchFuction = function (result){ 
    switch(result){ 
    case 'login': 
     $scope.loginFn(); 
     break; 
    case 'sign up': 
     $location.path('/register'); 
     break; 
    case 'register': 
     $scope.registerFn(); 
     break; 
    case 'cancel': 
     $scope.cancelregisterFn(); 
     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 'log out': 
     $scope.logout(); 
     break; 
} 
$scope.recog = function() { 
    var recognition = new SpeechRecognition(); 
    recognition.onresult = function(event) { 
    var result = event.results[0][0].transcript; 
    $scope.SwitchFuction(result); 
    $scope.$apply(); 
}; 

recognition.start(); 
+0

'SwitchFunction'被“正确”定义。 – jnthnjns

+0

但是,没有正确地被调用。 –

+1

正确,已经建立。请更新您的OP和任何未来用户的答案。 – jnthnjns

0

我建议你在Angular中使用ui-route进行路由。

但是,另一方面,如果你想解决switch-case的错误试试这个:

function switchFunction (result) { 
     switch(result){ 
     case 'login': 
      $scope.loginFn(); 
      break; 
     case 'sign up': 
      $location.path('/register'); 
      break; 
     case 'register': 
      $scope.registerFn(); 
      break; 
     case 'cancel': 
      $scope.cancelregisterFn(); 
      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 'log out': 
      $scope.logout(); 
      break; 
     } 
    } 

    function onResult (event) { 
     var result = event.results[0][0].transcript; 
     switchFunction(result); //YOU FORGET THIS CALL 
    } 

    function recog() { 
     var recognition = new SpeechRecognition(); 
     recognition.onresult = onResult; 
     recognition.start(); 
     $scope.$apply() 
    } 

    $scope.recog = recog; 
    $scope.switchFunction = switchFunction;