我对这个角度js完全不熟悉。我有javascript文件使用我能够获得一些数据。我想在控制器功能中处理该数据。但我无法做到这一点。我已经导入了控制器文件,如下所示,
external.js --location /src/js/test.js
import MainController from '../../src/app/result/Maincontroller'
....
....
....
var foo = "testdata"
MainController.js
Import External from ../../src/js/test.js
angular.module('WebApp').controller('MainCtrl', MainCtrl)
function ResultCtrl ($scope) {
$scope.testfunc = function(data) {
console.log(data)
}
}
如何将此foo值传递给$ scope.testfunc()。请告诉我如何从外部JavaScript调用此控制器功能。
答案 0 :(得分:0)
您已将foo声明为全局变量,并且可以通过其名称(foo)在控制器中访问。您唯一需要担心的是,您需要在视图(html文件)中包含包含全局变量的文件的引用,并且在包含变量foo的js文件之后包含该控制器的js文件。
虽然这会为你完成这项工作,但它并不是特别在angularjs中推荐的方法。您应该使用Angularjs服务向控制器公开数据。
答案 1 :(得分:0)
要访问全局声明的变量foo
,您可以使用$window.foo
。您可能需要将依赖项添加到$ window:
angular.module('WebApp').controller('MainController', ['$window', $window) {
// Here you can access your global variable as
console.log('FOO is', $window.foo);
}]);
要调用控制器方法,您需要将操作绑定到由Angular应用程序管理的DOM元素。 你应该在你的代码中找到这样的东西:
<div ng-app="WebApp" ng-controller="MainController">
<!-- Everything in here which is ng-something can be managed by Angular -->
<button ng-click="bar()">This button can call the bar() function</button>
</div>
将来,开始使用Angular services绑定数据,这是在控制器范围内加载数据的常见最佳做法。