2017-06-19 169 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這是在控制器的範圍加載數據的通用最佳實踐綁定您的數據。

相關問題