为什么我的指令可以从其父范围继承一个函数?

时间:2016-04-10 11:03:52

标签: javascript angularjs angularjs-directive scope

我创建了一个应该从其父范围继承内容的指令。

我使用了范围{...},但它只接收常规变量。 function似乎不起作用。

此外,我使用的是Angular 1.4,因此我使用"vm = this;"代替"$scope"



angular
    .module('player')
    .controller('MediaPlayerController', MediaPlayerController)
    .directive('sessionInfo', sessionInfo);

    function MediaPlayerController($sce, $timeout) {
      var vm = this;
      vm.setSourceIndex = setSourceIndex;
      vm.playerConfig ={};

      vm.session = {
        sessionName: 'SAT',
        sections: [
          {
            sectionId: 0,
            sectionName: 'SAT-1',
            sources: [
              {src: $sce.trustAsResourceUrl("videogular.mp4"), type: "video/mp4" }
            ]
          },
          {
            sectionId: 1,
            sectionName: 'SAT-2',
            sources: [
              {src: $sce.trustAsResourceUrl("big_buck_bunny_720p_h264.mov"), type: 'video/mp4'}
            ]
          }
        ]
      };

      function setSourceIndex(index) {
        vm.playerConfig.sources = vm.session.sections[index].sources;
      };
    }

    function sessionInfo() {
      return {
        restrict: 'AE',
        scope: {
          sections: '=',
          setSourceIndex: '&'
        },
        template: '<li ng-repeat="section in sections"><div ng-click="setSourceIndex({{section.sectionId}})">{{section.sectionName}}</div></li>'
      }
    }
&#13;
<div ng-controll="MediaPlayerController as meidaPlayer">
    <div class="playerSide">
      <ul session-info sections="mediaPlayer.session.sections" setSourceIndex="mediaPlayer.setSourceIndex(index)"></ul>
    </div>
</div>
&#13;
&#13;
&#13;

我错过了什么吗?有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

此处有多个问题

  • setSourceIndex应使用短划线写成:set-source-index。我甚至不确定它在这里是否有用,因为你没有从指令中调用它。

  • 您撰写了meidaPlayer而不是mediaPlayer

  • 您没有为指令设置控制器。然后该控制器应该与指令的属性进行交互。