2017-06-19 74 views
0

我完全是新的角度js。我有使用JavaScript文件我能够获得一些数据。我想在控制器功能中处理这些数据。但我无法做到这一点。我已经进口也如下控制器文件,如何将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

您已将foo声明为全局变量,并且应该可以在您的控制器中通过其名称(foo)进行访问。你唯一需要担心的是你需要在你的视图(html文件)中引用包含全局变量的文件,并且该控制器的js文件包含在包含变量foo的js文件之后。

虽然这会为你做这项工作,但它并不是特别在angularjs中推荐的方法。您应该使用Angularjs服务将数据公开给控制器。

0

要访问全局声明的变量foo,可以使用$window.foo。您可能需要依赖添加到$窗口:

angular.module('WebApp').controller('MainController', ['$window', $window) { 
    // Here you can access your global variable as 
    console.log('FOO is', $window.foo); 
}]); 

要调用控制器的方法,你需要绑定到由您的角度应用程序管理的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这是在控制器的范围加载数据的通用最佳实践绑定您的数据。

相关问题