通过父控制器AngularJS设置指令元素属性

时间:2013-09-09 15:51:02

标签: javascript angularjs

我想通过我的app level控制器配置我的指令模块。的 Plunker

的index.html

<div ng-controller="App">
  <foodz index="index"></foodz>
</div>

app.js

angular.module('app', ['foodz']).
  controller('App', ['$scope',function($scope){
    $scope.index = 1;
  }]);

foodz.js

angular.module('foodz', []).
  controller('foodzController', ['$scope',function($scope){

    //Data is coming in through external API
    $scope.$on('foodzFetched', function(e,d) {
      $scope.foodz = d;
    });

    //Lets say data to looks like:
    //[{"name":"banana"},{"name":"smoothy"}]
  }]).
  directive('foodz', function() {
    return {
      restrict: 'E',
      scope:{
        index: '@'
      },
      replace: true,
      controller: 'foodzController',
      templateUrl: 'foodzTemplate.html',
      link: function(scope, controller) {}
    };
});

foodzTemplate.html

<div ng-controller="foodzController">
  <span>
    {{foodz[index].name}}
  </span>
</div>

所以在这个例子中,我试图将index通过我的app级别控制器传递给我的指令元素的属性,该属性也有自己的控制器。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

尝试制作scope:{index:'='}

查看Directive Definition Object

我认为您在控制器中收到index='index'(作为字符串)。使用=,它将从父控制器获取值。