AngularJS自定义指令 - bindToController错误

时间:2017-09-11 16:59:33

标签: angularjs

为什么我收到错误: $ ctrl未定义 来自下面的自定义指令?我确实在指令内的控制器中定义了$ ctrl。

    var myapp = angular.module('plunker', []);
myapp.directive('userinfo', function() {
    return{
      restrict:'E',
      template: 'User : <b>{{$ctrl.user.firstName}}</b> <b>{{$ctrl.user.lastName}}</b>',
      scope:{
        user: '='
      },
      bindToController:true, 
      controller:function(){
        var $ctrl = this; 

      },

      controllerAs:$ctrl
    }
    return directive;
});
myapp.controller("MyController", function() {
    var $ctrl = this;
    $ctrl.jakob = {};
    $ctrl.jakob.firstName = "Jakob";
    $ctrl.jakob.lastName  = "Jenkov";

    $ctrl.john = {};
    $ctrl.john.firstName = "John";
    $ctrl.john.lastName  = "Doe";
}); 

1 个答案:

答案 0 :(得分:3)

controllerAs应该是字符串,但是您传递的是未定义的全局变量$ ctrl。试试这个:

controllerAs: '$ctrl'

From the docs

  

如果有必要引用控制器或任何绑定的功能   从模板到控制器,您可以使用该选项   controllerAs将控制器的名称指定为别名。