Javascript 将范围绑定到指令';s控制器 请考虑下面的角度指令: 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 } });

Javascript 将范围绑定到指令';s控制器 请考虑下面的角度指令: 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 } });,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,注意隔离的作用域、controllerAs语法以及设置为true的bindToController选项 这是我的指令在html中的外观: <map-options layers="mapCtrl.layers" map="mapCtrl.map" map-id="{{mapCtrl.mapId}}"> 日志输出为: log#1:注销“constructor{}”,我想这是可以的 log#2:注销绑定到作用域的正确对象 日志#3:注销未定义。在这里,我希望找到在$scope上找

注意隔离的作用域、
controllerAs
语法以及设置为
true
bindToController
选项

这是我的指令在html中的外观:

<map-options layers="mapCtrl.layers" map="mapCtrl.map" map-id="{{mapCtrl.mapId}}">

日志输出为:

  • log#1:注销
    “constructor{}”
    ,我想这是可以的
  • log#2:注销绑定到作用域的正确对象
  • 日志#3:注销
    未定义
    。在这里,我希望找到在
    $scope
    上找到的对象

我想将隔离作用域直接绑定到控制器,但这不起作用。奇怪的是,作用域中充满了数据,但是这些数据绑定到作用域,而不是像我希望的那样直接绑定到指令。我不明白,为什么。我一定错过了什么明显的东西。谢谢

我只是需要从Angular1.2切换到Angular1.3,现在它可以正常工作了。

嗨,你介意为此设置一个代码笔或JSIDLE吗?你使用的是什么版本的angularjs?我使用的是angularjs v1.2.28。我切换到了angular的新版本(v1.3.16),现在它突然开始工作了!谢谢你让我走上正轨。是的,bindToController是在1.3中添加的