controllerAs不使用内部指令

时间:2017-06-28 19:42:21

标签: angularjs angularjs-directive

在下面的代码中,controllerAs不使用widget和filter指令。

你能帮我解决这个问题。 我无法弄清楚我在哪里做错了。 : - (

预期输出:

Widget指令应该打印" From小部件控制器"。

Filter指令应打印" From过滤器指令"。

我转载了问题here,请检查。

HTML:

<div ng-app="myApp">

  <body-dir>
    <icon-dir>
      <filter-dir>

      </filter-dir>
    </icon-dir>

    <widget-dir>

    </widget-dir>
  </body-dir>
</div>

JS:

var myApp = angular.module('myApp', []);
myApp.controller('filterController', function filterController($scope) {
  var vm = this;
  vm.test = "From filter directive";
  alert("filter");
  return vm;
});
myApp.controller('widgetController', ['$scope', function widgetController($scope) {
  var oki = this;
  oki.widget = "From widget controller";
  alert("widget");
  return oki;
}])
myApp.directive('bodyDir', function() {
  return {
    restrict: 'E',
    link: function($scope) {
      alert('body-dir');
    }
  };
});

myApp.directive('widgetDir', function() {
  return {
    restrict: 'E',
    controller: 'widgetController',
    controllerAs: 'oki',
    template: "<span>{{oki.widget}}</span>",
    link: function($scope) {
      alert('widget-dir');
    }
  };

});
myApp.directive('filterDir', function() {
  return {
    controller: 'filterController',
    controllerAs: 'vm',
    restrict: 'E',
    template: "<span>{{vm.test}}</span>",
    link: function($scope) {

      alert('filter-dir');
    }
  };
});
myApp.directive('iconDir', function() {
  return {
    restrict: 'E',
    link: function($scope) {
      alert('icon-dir');
    }
  };

});

1 个答案:

答案 0 :(得分:0)

据我记忆,controllerAs was introduced in AngularJS v1.2,但在jsfiddle您正在使用 v1.0.1 。这就是controllerAs不适用于小部件和过滤器指令的原因。