2016-11-25 84 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