Angularjs 自定义指令在ng repeat中不起作用
大家好:这是我第一次在这里问问题 billWatch.HTMLAngularjs 自定义指令在ng repeat中不起作用,angularjs,Angularjs,大家好:这是我第一次在这里问问题 billWatch.HTML <ul class="border-and-bg vote-unordered-list bill-link-font"> <li><a ng-click='bill.yea = bill.yea + 1;ctrl.voteYea(1, bill.id, bill.yea)'>Yea</a>:{{bill.yea}} | <a ng-cli
<ul class="border-and-bg vote-unordered-list bill-link-font">
<li><a ng-click='bill.yea = bill.yea + 1;ctrl.voteYea(1, bill.id, bill.yea)'>Yea</a>:{{bill.yea}} | <a ng-click='bill.nay = bill.nay + 1; ctrl.voteYea(0, bill.id,bill.nay)'>Nay:{{bill.nay}}</a> | **<a ng-click="showComments()">{{filtered.length}} comments</a>**
</li>
</ul>
<div ng-mdoel='ctrl.commentsSection' ng-repeat='($index, comment) in ctrl.billComments | reverseComments | filter: comment.bill_id = bill.id as filtered' class="comments-container" >
<div>
<show-comment></show-comment>
<ul>
<li>{{comment.user_name}} | {{comment.comment}} </li>
</ul>
<!-- <ul>
<li ng-bing-html>
<my-comment></my-comment>
</li>
</ul> -->
</div>
</div>
showComment.dir.js
angular.module('ccApp')
.directive('showComment', function(){
function link(scope,element,attrs){
scope.showComments = function(){
console.log('showComment');
}
}
return {
restrict: 'EA',
link:link
};
})
我省略了大部分控制器代码。我只想在控制台中单击锚定标记的时记录“showcoment”。它在ng repeat
块外工作,但不在块内工作。有人能帮忙吗
谢谢 免责声明:
我们可以举一个小得多的例子,或者实际上建议使用不同的方法,但由于您似乎仍处于项目的“技术探索”阶段,我只想帮您解决您的问题。:)
您遇到的问题是,传递到指令的链接
功能的范围
与您的ng repeat
之外的范围不同
这是因为ng repeat
指令为每个元素创建了一个新的范围
如果要从ng repeat
内将函数showComments
附加到范围外的上,则必须在链接中执行以下操作:
scope.$parent.showComments = function () {/*...*/};
而不是:
scope.showComments = function () {/*...*/};
但是,通过这种方式,您将为每个注释分配父级的$scope.showcoments
函数。一次就够了
因此,我建议您只需将
元素拉到ng repeat
之外。该指令将附加到其容器的范围
,并将正确设置showcoments
功能,只要设置一次即可
查看下面的工作片段,我只想:
- 连接了你给我们的所有代码
- 将
元素向上移动
angular
.module('ccApp',[])
.controller('BillWatchCtrl',函数BillWatchCtrl(){
})
.directive('showcoment',function(){
功能链接(范围、元素、属性){
scope.showComments=函数(){
log('显示注释…');
}
}
返回{
限制:“EA”,
链接:链接
};
})
- 是:{{bill.Yea}}否:{{bill.Nay}}否:{filtered.length}评论**
- {{comment.user_name}}{{comment.comment}}
欢迎使用堆栈溢出!您可以通过格式化代码以提高可读性和消除滚动来改进您的问题。为了吸引更多愿意帮助您的用户,我建议您更清楚地说明您的问题,不仅说明您想要什么,而且说明当前代码的问题。也许你还可以进一步减少它,创建一个。ng Repet是否至少呈现了一条注释,我的意思是我的过滤器不会输出任何注释?
scope.showComments = function () {/*...*/};