Я пытаюсь получить доступ к функции, определенной в области контроллера, из директивы, вложенной в другую директиву. Я использую «&» и передавая имя функции в качестве атрибута директивы, однако я до сих пор не могу достичь функции в области контроллера.Доступ к функции контроллера в области действия директивы
Может ли кто-нибудь исправить ошибки, если я ошибаюсь? Я потратил несколько часов, пытаясь найти, что мне нужно использовать «&» для достижения объема контроллера, но застрял здесь после того, что я сделал.
JSFiddle здесь - http://jsfiddle.net/fwR9Q/12/
Код:
<div ng-controller="PlayerCtrl">
<div class="col-md-4 col-sm-6 col-xs-12" ng-repeat="video in videos" >
<tf-video src="{{video.src}}" width="{{video.width}}" handleClick="playVideo(videoId, modeNum)" height="{{video.height}}" title="{{video.title}}"/>
</div>
</div>
<script>
var myApp = angular.module('myApp', []);
myApp.controller('PlayerCtrl',
function PlayerCtrl($scope,$log, trailers)
{
$scope.videos = trailers;
$scope.playVideo = function(videoId, modeNum){
alert("video Id = " + videoId + "; mode Num = " + modeNum);
return false;
};
}
);
myApp.directive('tfVideo', function() {
return{
restrict: 'AE',
scope: {
src: '@',
handleClick: '&',
width: '@width',
height: '@height'
},
template: '<a href="#" ng-click="handleClick({videoId: {{src}}, modeId: modeNum{{$parent.$index}} })"><img src="http://img.youtube.com/vi/{{src}}/0.jpg" height="{{height}}" width="{{width}}"/></a>'
};
});
myApp.factory('trailers', function(){
var trailerVideos = [
{
src:"6kw1UVovByw",
width:"324",
height:"300"
},
{
src:"uWgDVz4NEO4",
width:"324",
height:"300"
}
];
return trailerVideos;
});
</script>
Спасибо
, поскольку все, что вы делаете, используя директиву для создания шаблона, почему бы вам даже не нужна изолированная сфера? – charlietfl