2016-11-25 79 views
-2

我是Angular的新手。我試圖執行我的代碼在我的app.js文件中的控制器中定義。我需要通過JavaScript來做到這一點。 如何做到這一點?從Javascript中調用角度控制器/函數

app.js在另一個頁面文件

app.controller('MyLocCtrl',function($firebaseObject){ 
 
    myfunction = function() { 
 
const rootRef = firebase.database().ref(); 
 
this.object = $firebaseObject(rootRef); 
 

 
var myLatLng = {lat: -25.363, lng: 131.044}; 
 

 
var map = new google.maps.Map(document.getElementById('map'),{ 
 
    zoom: 4, 
 
    center: myLatLng 
 
}); 
 

 
var marker = new google.maps.Marker({ 
 
    position: myLatLng, 
 
    map: map, 
 
    title: 'Hello World!' 
 
}); 
 

 
}; 
 

 
} 
 

 
);

和我的JS代碼// map.html

<script src="app.js"></script> 
 
    <body ng-app="app"> 
 
    <div id="map" ng-app='app' ng-controller="MyLocCtrl"></div> 
 
</body> 
 

 
    <script async defer 
 
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDUX6F83LCTZ7_uQlXzR6_Q2u6BXFIvGkY&callback=angular.element(document.getElementById('map')).firebaseObject().myfunction();"> 
 
    </script> 
 

 
</html>

+0

不,您不能/不應該使用非Angular代碼對您的Angular控制器進行調用。描述你實際想要解決的問題。你想包含Google API並在加載時執行一個函數? – deceze

+0

@deceze是的確切!現在該怎麼辦? – agha

回答

0

你應該有應用程序聲明d爲角模塊,像這樣:

var app = angular.module('myApp',[]); 

app.controller('MyLocCtrl', ['$scope', function($scope) { 
    // 
}]); 

之後,您可以

還與HTML溝通,你已經在body宣佈ng-app='app',你應該從div元素中取出

+0

這並沒有以任何方式說明如何掛鉤Google API回調。 – deceze

+0

他沒有可以連接到HTML的JS文件。我建議製作具有控制器的應用程序模塊。 Google API回調是問題的另一部分 – Alex