【问题标题】:Call AngularJS method from Javascript从 Javascript 调用 AngularJS 方法
【发布时间】:2016-02-08 10:55:51
【问题描述】:

我正在使用 AngularJS 和 Typescript。我正在使用一个外部库,我需要从该库中调用一个 AngularJS 方法,该库是我遵循 this example 的 vanilla 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>

有什么想法吗?

【问题讨论】:

    标签: javascript angularjs typescript


    【解决方案1】:

    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);
     });
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 2015-08-23
      • 1970-01-01
      • 2014-05-18
      • 2012-02-07
      • 2012-05-07
      • 2015-05-13
      相关资源
      最近更新 更多