2015-06-12 3 views
0

Пожалуйста, обратите внимание на следующую угловую директиву: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.

Я хочу напрямую связать выделенный объем с контроллером, но это не сработает. Как ни странно, область заполняется данными, но эти данные привязаны к области видимости и не привязаны непосредственно к директиве, как мне бы хотелось. Почему я не могу понять. Я должен упустить что-то очевидное. Благодаря!

+0

Привет, не возражаете ли вы установить CodePen или JSFiddle для этого? –

+1

какую версию углового вы используете? –

+0

Я использую angularjs v1.2.28. – Hinrich

ответ

0

Мне просто пришлось переключиться с Angular1.2 на Angular1.3, и теперь он работает так, как ожидалось.

+1

Да, bindToController добавлен в 1.3 –

Смежные вопросы