我们在 controller.js 文件上有一个控制器。
angular.module('MyModule', [])
.controller('MyController', function ($scope) {
$scope.myfunction = function (data) {
alert("---" + data);
// Test(); Calling java script method
};
});
在其他文件 common.js 中,我们定义了
function Test()
{
alert("Test Method is Calling");
}
两个文件都包含在html中,但是我们无法从控制器方法调用传统的javascript代码。
请帮忙。
答案 0 :(得分:2)
工作正常,请确保已加载其他文件:
angular.module('MyModule', [])
.controller('MyController', function ($scope) {
$scope.myfunction = function (data) {
alert("---" + data);
Test(); // Calling java script method
};
});
function Test()
{
alert("Test Method is Calling");
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="MyModule" ng-controller="MyController">
<button ng-click="myfunction('Hey')">Call extenal function</button>
</div>
答案 1 :(得分:1)
我不建议将AngularJS代码与旧版JS代码混合使用。在您的情况下,如果Test()是您经常使用的某种函数,我会将其封装在服务中并将其注入您的控制器
angular.module('MyModule')
.factory('Utilities', function ($window) {
return {
Test : function() {
$window.alert('Blah blah');
}
};
});
然后在你的控制器中
angular.module('MyModule', [])
.controller('MyController', function ($scope, Utilities) {
$scope.myfunction = function (data) {
Utilities.Test();
};
});
这是纯粹的AngularJS方法
答案 2 :(得分:0)
是的,您可以使用外部或内部java脚本的功能,但这在角度控制器中混合功能并不好。 如果您仍然需要它,您可以创建服务,通过服务,您可以调用外部java脚本方法。
var app = angular.module('plunker', []);
app.service('MyService', function() {
this.callAlert = myTest();
});
app.controller('MainCtrl', function($scope, MyService) {
$scope.name = 'World';
$scope.callService = MyService.callAlert;
});
function myTest(){
alert('Hello world');
}
这是plunker链接 Plunker Demo