如何将值从javascript传递给控制器​​函数?

时间:2017-06-19 11:43:37

标签: javascript angularjs

我对这个角度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调用此控制器功能。

2 个答案:

答案 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绑定数据,这是在控制器范围内加载数据的常见最佳做法。