Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮时使用jquery调用angular方法_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 单击按钮时使用jquery调用angular方法

Javascript 单击按钮时使用jquery调用angular方法,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我想使用jquery按钮单击从angular controller调用一个方法 这是我的HTML <div class="actionBar"> <select class="select select-primary form-control" id="ClassificationStepTechnical" required> <option value=""

我想使用jquery按钮单击从angular controller调用一个方法

这是我的HTML

<div class="actionBar">
    <select class="select select-primary form-control" id="ClassificationStepTechnical" required>
        <option value="">...</option>
        <option value="1">yes</option>
        <option value="2">no</option>
   </select>
   <input type="button" value="start" class="btn btn-primary" onclick="StartRequestStep()" />
</div>

<div id="StartRequest" ng-app="complaintRequest" ng-controller="CompalintController"></div>
我的角度控制器:

(function(){
    "use strict";

    angular.module("complaintRequest").controller("CompalintController", ["$state",CompalintController]);

    function CompalintController($state)
    {
        var vm = this;
        vm.createComplaint = function () {

            var stepToGo = 'Request.StartRequest'
            $state.go(stepToGo, { requestId: -1 });
        }

        vm.loginComplaint = function () {
            var stepToGo = 'Login.Authentication'
            $state.go(stepToGo,null);
        }

        vm.ClassificationRequest = function () {
            var stepToGo = 'Classification.ClassificationRequest'
            $state.go(stepToGo, null);
        }
    }
}())
我想在单击按钮时调用vm.createComplaint,但出现了此错误

Uncaught TypeError: angular.element(...).vm is not a function

这应该行得通。顺便说一句,我看不出你的功能在哪里。

忽略下面的所有答案,立即停止使用Angular和jQuery。永远不要把它们一起使用。它们是两个完全不同的框架,一个操纵DOM,另一个动态地重新生成相同的DOM。他们不知道对方的存在和行动。您的应用程序必然充满了黑客和变通方法,混乱且难以维护,更不用说您必须加载两个库而不是一个库。我可以解释为什么你会收到这个错误信息。我可以告诉你如何修复它。但不值得写一个答案,因为你的应用程序结构太差了。该应用程序使用jQuery调用AngularJS控制器中的方法,然后该控制器调用jQuery函数。这是一个很难理解、测试、调试和维护的结构。感谢您的评论,我没有任何angular方面的经验,但您的评论确实帮助我以这种方式忽略了实现。各位,停止尝试让angular和jQuery一起工作。它们只是没有。请记住,
angular.element().scope()
方法需要启用。使用该模式会显著降低性能。
Uncaught TypeError: angular.element(...).vm is not a function
var module = angular.module("complaintRequest", []);
module.controller("CompalintController", ["$scope", function($scope){
   $scope.createComplaint = function () {
    var stepToGo = 'Request.StartRequest'
    $scope.go(stepToGo, { requestId: -1 });
  }

  $scope.loginComplaint = function () {
    var stepToGo = 'Login.Authentication'
    $scope.go(stepToGo,null);
  }

  $scope.ClassificationRequest = function () {
    var stepToGo = 'Classification.ClassificationRequest'
    $scope.go(stepToGo, null);
  }
}]);

function StartRequestStep() {
     if ($("#ClassificationStepTechnical").val() == "1") {
        angular.element($("#StartRequest")[0]).scope().createComplaint();
     }   
}