声音结束时,我需要从angular.js调用JavaScript方法。 我想调用ready方法中的check()函数。

app.controller("myCtrl",function($scope,ngAudio,$document)
    {
        $scope.audio;
        $scope.play=function(myAud)
        {
            $scope.audio = new Audio(myAud)
            $scope.audio.play();
            $scope.audio.onended=function()
            {
                console.log("called");
                $scope.audio = new Audio('aud1.mp3');
                $scope.audio.play();
                $scope.check();
            }
        }
        $scope.stop=function()
        {
            $scope.audio.stop()
        }
         $document[0].addEventListener("visibilitychange", function() {
        var doucmentHidden = document.hidden;
        if (doucmentHidden)
        {
            console.log("called");
            $scope.audio.pause();
        }
        else
        {
            console.log("called");
            $scope.audio.play();
        }
        }, false);
    });
    </script>
    <script>
        $(document).ready(function()
        {
            var aud= angular.element(document.getElementById('container')).scope();
             aud.play('aud.mp3');
                 function check()
                 {
                    console.log("called1");
                }
        });
    </script>

在需要时如何触发check()函数?

#1楼 票数:1 已采纳

如我所见,您的check()函数位于不同的script块和不同的范围内。 相反,您应该将其放在控制器的作用域内,以便可以使用:

    app.controller("myCtrl", function($scope, ngAudio, $document) {
      $scope.audio;
      $scope.check = function(){ // declare it here.
          console.log('check called on end.');
      };
      $scope.play = function(myAud) {
        $scope.audio = new Audio(myAud)
        $scope.audio.play();
        $scope.audio.onended = function() {
          $scope.check(); // now it can use the check function from the $scope
        }
      }
      $scope.stop = function() {
        $scope.audio.stop()
      }
      $document[0].addEventListener("visibilitychange", function() {
        var doucmentHidden = document.hidden;
        if (doucmentHidden) {
          console.log("called");
          $scope.audio.pause();
        } else {
          console.log("called");
          $scope.audio.play();
        }
      }, false);
    });
     // remove the script tags and put both in a same script block 
    $(document).ready(function() {
      var aud = angular.element(document.getElementById('container')).scope();
      aud.play('aud.mp3');
    });

  ask by Vinoth kanna translate from so

未解决问题?本站智能推荐:

1回复

从其他javascript/Jquery函数调用Angularjs函数

我有两个js文件,即app.js和datepicker.js。 我与此处的html文件无关。 datepicker.js中有一个名为clickApply()的javascript函数。 我想从clickApply()函数调用位于app.js文件内部的另一个SubmitDetails()函数
1回复

如何不使用angular.js创建自定义ng-repeat?

我正在尝试从服务器获取带有json的数据并将其处理为html。如果我在javascript上再次编写代码,这将很难编写并且很难理解,因为我将获取数据并使用jquery append附加数据到html元素,我应该添加很多html inline。例如: 想象它会比这个更大,并且我应该在javas
1回复

当2个输入在AngularJS中更改时调用同一方法时,标识方法的调用者

可以说我有一个包含2列(用户ID,用户名)的表。 我有两个输入文本字段,它们在更改时会调用方法filter()来过滤表中显示的数据。 在AngularJS中,我如何确定哪个元素称为filter()方法。 我也想访问调用元素的数据属性。 我只是从Angular开始,任何帮助都会很棒!
1回复

使用jQuery更改Angular标签值

我正在使用angular,并且当选中复选框时,我想更改数据字段指令/标签的值。 第二个div是通过自定义指令( data-field-display-id )的复选框。 但是,单击时对第一格的data-field无效。 我在做什么错,我该如何解决? 编辑: 角度版本:v1.2.
1回复

jQuery或Angular的高级数字控件?

我一直在寻找可以执行以下操作的jQuery或AngularJS数字控件: 十进制格式 货币格式 千格式 以及HTML5数字控件中的基本功能,例如: 最小/最大 步 纱厂 有人遇到过这样的事情吗?
3回复

比较JavaScript与AngularJS?[关闭]

我知道JavaScript是一种编程语言,而AngularJS是与JavaScript一起使用的基于MVC的框架。 但是我有一个作业要比较: JavaScript与jQuery语法, 以及JavaScript与AngularJS语法。 现在,对于JavaScript与jQue
2回复

调用angularjs函数而不是jquery

AngularJS具有重写jquery函数的函数。 对于例如, wrap()函数中存在angular.js和jquery-1.10.2还,但我想打电话给wrap()的函数angular.js所以我应该怎么称呼呢? 现在,当我尝试在这样的指令中调用它时,它会调用jquery的wrap()函数
3回复

将ng-pattern与angular和bootstrap3一起使用

我是Web开发的新手。 现在我的代码是这样的-> 所以,当我给出错误信息时,它就是这样 在这里,我删除了div,现在当我尝试使用margin稍微增加该消息时,它就没有发生。 所以,