【发布时间】:2016-04-10 11:03:52
【问题描述】:
我创建了一个指令,它应该从其父范围继承某些东西。
我使用了 scope{...} ,但它只接收常规变量。 functions 似乎不起作用。
另外,我使用的是 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>'
}
}
<div ng-controll="MediaPlayerController as meidaPlayer">
<div class="playerSide">
<ul session-info sections="mediaPlayer.session.sections" setSourceIndex="mediaPlayer.setSourceIndex(index)"></ul>
</div>
</div>
我错过了什么吗?有人可以帮帮我吗?
【问题讨论】:
-
ng-controll应该是ng-controller。正如下面的答案所述,您的角度语法有很多问题
标签: javascript angularjs angularjs-directive scope