无法从angularjs调用JavaScript原型函数

Unable to call JavaScript prototype function from angularjs

本文关键字:JavaScript 原型 函数 调用 angularjs      更新时间:2023-09-26

我正试图通过点击超链接来调用一个JavaScript原型函数,如下所示。但我无法在点击链接时启动getInfo()功能。我是错过了什么基础知识还是做错了什么?

这是我的JS:

$(document).ready(function () {
    function Apple() {
        this.type = "fff";
        this.color = "red";
    }
    Apple.prototype.getInfo = function () {
        alert( this.color + ' ' + this.type + ' apple');
    };
    var appl = new Apple();
});

这是我的html:

  <a href="" ng-click="appl.getInfo()">click</a>

查看您的上述代码,我相信问题在于您没有将appl暴露给您的via(通过$scope)。你需要做一些更像这样的事情:

var MyController = function($scope) {
  function Apple() {
    this.type = "fff";
    this.color = "red";
  };
  Apple.prototype.getInfo = function () {
    alert( this.color + ' ' + this.type + ' apple');
  };
  $scope.appl = new Apple();
};

然后:

<div ng-controller="MyController">
   <a href="" ng-click="appl.getInfo()">click</a>
</div>

更详细地说,传递给Angular的ngClick的表达式是在Angular $scope的上下文中(而不是在它们在DOM中的位置的上下文中)求值的。您可以通过查看ngClick 的来源来看到这一点