从Javascript调用AngularJS方法

Call AngularJS method from Javascript

本文关键字:方法 AngularJS 调用 Javascript      更新时间:2023-09-26

我正在使用AngularJS和Typescript。我正在使用一个外部库,我需要从该库中调用一个 AngularJS 方法,该方法是原版 javascript 我遵循了此示例

但遗憾的是它没有奏效。

我得到的错误是该函数(在我的 AngularJS 类中)不是函数。

  var scope = angular.element(
document.
getElementById("MainWrap")).
scope();
scope.$apply(function () {
    scope.createSession(data);
});

现在这与我在打字稿中使用的vm有关吗?

以下是打字稿代码

module MyCtrl{
interface IMyController{
    createSession();
}
class MyController implements IMyController{
    constructor(
        ){
        var vm = this;

    }
    createSession(data){
             console.log(data);
    }
}
angular.module('app').controller('MyCtrl', MyController);

}

这是HTML

<section id="MainWrap">
</section>

有什么想法吗?

scope是Angular用来绑定模板和控制器的对象。但是,您可以使用语法controllerAs来摆脱作用域,并使用控制器实例将 this 的属性和方法与模板绑定。执行此操作后,模板的scope将具有一个名为别名的属性,该属性位于路由器/指令定义(controllerAs: alias)或模板ng-controller="MyCtrl as alias"上提供给控制器的别名。此属性是控制器实例,因此您可以像这样调用方法:

 var scope = angular.element(document.getElementById("MainWrap")).scope();
 scope.$apply(function () {
    scope.ctrlAlias.createSession(data);
 });

但是,如果可能的话,将其封装在指令中,这样您就不需要从应用程序外部访问角度组件。