我正在研究使用angularjs的概念验证。我必须在我使用ng-click的链接上使用单击功能。此ng-click位于ng-repeat内。我在stackoverflow中经历了如此多的解决问题,关于如何在ng-repeat中使用ng-click。但不知何故,这些解决方案都没有奏效。有人可以帮我指出我在做错的地方吗?
HTML Code :
<collection collection='tasks'></collection>
<collection collection='articleContent'></collection>
app.directive('collection', function () {
return {
restrict: "E",
replace: true,
scope: {
collection: '='
},
template: "<ul><member ng-repeat='member in collection' member='member'></member></ul>"
}
});
app.directive('member', function ($compile) {
return {
restrict: "E",
replace: true,
scope: {
member: '='
},
template: "<li><a href='#' ng-click='getArticleContent(member.itemId)'>{{member.title}}</a></li>",
link: function (scope, element, attrs) {
if (angular.isArray(scope.member.tocItem)) {
if(scope.member.hasChildren == "true")
{
for(var i=0;i<scope.member.tocItem.length;i++){
if(scope.member.tocItem.title) {
scope.member.tocItem.title.hide = true;
}
}
}
element.append("<collection collection='member.tocItem'></collection>");
$compile(element.contents())(scope)
}
}
}
});
app.controller('AbnTestController', function($scope) {
var bookId ="";
$scope.tasks = data;
$scope.getArticleContent = function(itemId){
alert('inside article content');
$scope.articleContent = articleData[0].articleContent;
}
});
点击链接后,此处永远不会调用getArticleContent方法。
答案 0 :(得分:1)
指令成员拥有自己的范围,意味着孤立的范围。 模板有一个ng-click来执行getArticleContent,即member指令不包含getArticleContent函数。
您有两种选择:
OP评论后更新:
我正在添加OP代码,其中一些数据传递给指令进行操作:
if (i < s2.length - 1)
如果OP可以创建一个供我们审阅和修改的jsfiddle,那将会更有帮助。