【发布时间】:2016-06-30 13:19:03
【问题描述】:
我有一个指令(显示 youtube 视频),它应该将函数作为属性,以便能够在链接函数中启动它。
在我写的html里面(用jade)
div(ng-controller="videoPageCtrl")
...
div(my-youtube,id='aaa',url='KEHxHr-Ih9w',on-change="doEventsOnChange")
我的控制器和指令如下所示
app
.directive('myYoutube', function($sce, $timeout) {
return {
restrict: 'A',
scope: {
url: '@',
id: '@',
onChange: '&',
},
link: function(scope) {
$timeout(function() {
scope.player = new YT.Player(scope.id, {
videoId: scope.url,
events: {
'onStateChange': function(state) {
console.log('state changed to', state, scope.id, scope.onChange);
scope.onChange(state, scope.id);
}
}
});
}, 5000);
}
};
})
.controller('videoPageCtrl', ['$scope', '$http', '$sce', function($scope, $http, $sce) {
$scope.doEventsOnChange = function(state, id) {
console.log(id, state, 'launched from controller!');
};
}]);
问题是我无法通过id 和state 并启动doEventsOnChange 函数。
结果在 chrome 开发控制台中,我只能看到 state changed to 行,但看不到 launched from controller! 行通过 id 和 state。
我做错了什么?
【问题讨论】:
标签: angularjs angular-directive