我试图将指令中的一些数据传递到控制器中的函数addTrackFromPicker
。
$scope.addTrackFromPicker = function (message) {
console.log("addTrackFromPicker", message);
};
这是我在指令中的内容
dir.directive('youtubeList', function($http, $timeout, YT_event){
return {
restrict: 'E',
scope: {
search: '=',
dial: '&'
},
templateUrl: 'youtube-list.html',
...
这里我想从我的模板中调用控制器函数并将其作为参数传递给item.id.$t
:
<div class="media list-group-item" ng-repeat="item in entries">
<a type="button" ng-click="dial(item.id.$t)">
<img ng-src="{{item.media$group.media$thumbnail[0].url}}">
</a>
但我不知道如何将其传递给我的标签
<youtube-list search="search" dial="addTrackFromPicker(???)"></youtube-list>
我也试过$parent.addTrackFromPicker
,但它没有用
答案 0 :(得分:10)
为了从您的指令传递您的数据,您需要这样做:
<youtube-list search="search" dial="addTrackFromPicker(data)"></youtube-list>
然后,在您的模板中:
<div class="media list-group-item" ng-repeat="item in entries">
<a type="button" ng-click="dial({data: item.id.$t})">
<img ng-src="{{item.media$group.media$thumbnail[0].url}}">
</a>
</div>
如果其他内容对您的情况更有意义,您可以使用data
以外的“参数名称”。有关其工作原理的详细信息,请参阅Angular's documentation on scope
。
答案 1 :(得分:5)
隔离范围:将一些值从父范围传递给指令
AngularJS提供了3种类型的前缀
所有这些前缀都接收来自指令元素属性的数据。
class="directive"
name="{{name}}"
color="color"
当指令在scope属性中遇到前缀时,它将在指令的html元素上查找属性(具有相同的属性名称)
scope : {
name: "@"
}
我已关注此链接http://jsfiddle.net/shidhincr/pJLT8/10/light/