如何在Angularjs中调用Javascript函数

如何在Angularjs中调用Javascript函数,javascript,angularjs,Javascript,Angularjs,这里我得到一个错误,因为未定义myFunction(): app.controller('myctrl',function(){ myFunction(); }); function myFunction() { debugger; document.getElementById("abc").disabled = false; } 这里的myFunction是onclick=“myFunction()”,但我试图在我的函数中调用它 我犯了什么错误?请帮帮我这是个问题

这里我得到一个错误,因为未定义
myFunction()

app.controller('myctrl',function(){
    myFunction();
});

function myFunction() {
    debugger;
    document.getElementById("abc").disabled = false;
}
这里的
myFunction
onclick=“myFunction()”
,但我试图在我的函数中调用它
我犯了什么错误?请帮帮我这是个问题

如果您想使用html中的函数,您必须通过添加$scope将函数链接到控制器的作用域。到我的函数,所以你得到

app.controller('myctrl', ['$scope', function() {
    $scope.myFunction();
}]);

function myFunction() {
    debugger;
    document.getElementById("abc").disabled = false;
}

此外,如果您的函数任务是使元素noy禁用,您可以使用ng disabled,我使用ng disabled创建了一个函数,您不应该在角度控制器之外定义函数。当您这样做时,您将丢失角度上下文,因为angular不知道它发生了。您将开始看到一些怪事,例如双向数据绑定问题以及其他问题

其次,您需要将
$scope
模块导入
控制器
,以便在其上定义函数。有其他方法可以做到这一点,但这是最常见的


显示警报
const dontdothis=()=>{
警报(“功能应在角度控制器内”);
};
常量app=angular.module('myApp',[]);
app.controller('myCtrl',($scope)=>{
不要这样做();
$scope.alertreach=()=>{
警报(“这又是警报”);
};
});

请分享完整准确的错误信息message@NicoHaase这里我在onclick=myFunction()中调用myFunction“当我点击按钮时,它正在工作,但当我调用函数时,它正在调用但不工作,请在问题中添加完整准确的错误消息。我认为这是一个范围界定的问题,我还建议您提供一个。您显示的代码本身似乎没有错误。您需要将
$scope
导入到函数中<代码>$scope在您的答案中未定义。这在你的plunker上是正确的。事实上,编辑了我的答案,所以现在$scope被导入了。谢谢
<div ng-app="myApp" ng-controller="myCtrl">
  <button ng-click="alertAgain()">
   Show an alert
  </button>
</div>



const dontdothis = () => {
    alert('function should be within the angular controller');
};
const app = angular.module('myApp', []);
app.controller('myCtrl', ($scope) => {
    dontdothis();

    $scope.alertAgain = () => {
        alert('this is an alert again');
    };
});