Пожалуйста, обратите внимание на следующую угловую директиву:Bind сферы контролера Директив
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}}">
Выходы журнала являются:
- журнал # 1: пиловочник из
"constructor {}"
, который я предполагаю нормально. - log # 2: выводит правильный объект, привязанный к области видимости.
- журнал № 3: Выходит
undefined
. Это, где я ожидал найти объект, который я нашел на$scope
.
Я хочу напрямую связать выделенный объем с контроллером, но это не сработает. Как ни странно, область заполняется данными, но эти данные привязаны к области видимости и не привязаны непосредственно к директиве, как мне бы хотелось. Почему я не могу понять. Я должен упустить что-то очевидное. Благодаря!
Привет, не возражаете ли вы установить CodePen или JSFiddle для этого? –
какую версию углового вы используете? –
Я использую angularjs v1.2.28. – Hinrich