我无法理解为什么我无法从指令访问$ scope属性,文档说指令不会创建新的作用域,为什么我不能访问$ scope属性?
'use strict';
var climbingApp = angular.module('climbingApp', []);
climbingApp.controller('ctrl', function($scope) {
$scope.initLocation = {
lat: -54.798112,
lng: -68.303375
};
google-map.js
index.html 'use strict';
climbingApp.directive('gmap', function() {
return {
restrict: 'E',
replace: true,
template: '<div id="map-canvas"></div>',
link: function(scope, iElement, attrs) {
console.log(scope.initLocation);
},
}
})
<html ng-app="climbingApp">
<body>
<gmap></gmap>
</body>
</html>
<script src="//code.angularjs.org/1.2.0-rc.2/angular.min.js"></script>
<script src="app/app.js"></script>
<script src="app/dependencies/google-maps.js"></script>
console.log
始终返回undefined。
答案 0 :(得分:2)
您需要将范围注入控制器
climbingApp.controller('ctrl', function($scope) {
答案 1 :(得分:1)
您必须将控制器与视图(如果使用ngRoute
)或使用ng-controller
的元素相关联。像这样:
<body ng-controller="ctrl">...</body>
答案 2 :(得分:0)
在控制器中注入$ scope:
var climbingApp = angular.module('climbingApp', ['ngRoute']);
climbingApp.controller('ctrl', function($scope) {
$scope.initLocation = {
lat: -54.798112,
lng: -68.303375
};
$scope.markers = [
{
'title' : 'prueba',
'position' : [-54.798112, -68.303375]
},
{
'title': 'prueba',
'position': [-54.798212, -68.303375]
}
];
});
'use strict';
climbingApp.directive('gmap', function() {
return {
restrict: 'E',
replace: true,
template: '<div id="map-canvas"></div>',
link: function(scope, iElement, attrs) {
console.log(scope.initLocation);
},
}
})
在这里工作:http://plnkr.co/edit/fiK5viToLOVGobnAKZtB?p=preview
显示日志。
$ scope或$ location必须作为参数传递给控制器的功能。