请考虑以下角度指令:
angular.module('map').directive('mapOptions',
function MapOptionsDirective() {
return {
restrict: 'E',
transclude: true,
scope: {
map: '=',
layers: '=',
mapId: '@'
},
controller: mapOptionsController,
controllerAs: 'mapOptionsCtrl',
bindToController: true,
templateUrl: 'modules/map/views/mapoptions.client.view.html'
};
///////////////////////////
function mapOptionsController($scope) {
var vm = this;
console.log(vm); // log #1
console.log($scope.map) // log #2
console.log(vm.map); // log #3
}
});
请注意隔离范围,controllerAs
语法以及bindToController
选项设置为true
。
这是我的指令在html中的样子:
<map-options layers="mapCtrl.layers" map="mapCtrl.map" map-id="{{mapCtrl.mapId}}">
日志输出为:
"constructor {}"
,我猜是好的。undefined
。这是我期望找到$scope
上找到的对象。我想直接将隔离范围绑定到控制器,但这不起作用。奇怪的是,范围被数据填充,但是这个数据绑定到范围,并且不像我希望的那样直接绑定到指令。我想不通,为什么。我一定错过了一些明显的东西。谢谢!
答案 0 :(得分:0)
我只需要从Angular1.2切换到Angular1.3,现在它按预期工作。