если мы создаем два или три комментария с несколькими ответами на них, то "полезная" ссылка вызывает проблему при щелчке, она выполняет операцию ng-click по индексу с таким же номером, тем самым отображая весь текст с тем же индексом. как разрешить это вложение, чтобы при щелчке ссылки показывался только соответствующий текст
http://plnkr.co/edit/XS4Nro3sdIWMnopdgDYG?p=preview
операции ng-click и ng-show работают через контроллер myDiscuss
var app = angular.module("myDiscuss", []);
app.controller("TabController", function($scope) {
$scope.subTab = null;
$scope.subLike=null;
$scope.selectSubLike = function (setTab) {
$scope.subLike=setTab;
}
$scope.selectSubTab = function(setTab){
$scope.subTab = setTab;
};
$scope.isSelectedSub = function(checkTab){
return $scope.subTab === checkTab;
};
$scope.isSelectedSubLike = function(checkTab){
return $scope.subLike===checkTab;
};
});
Для просмотра html файла в ссылке plunker.
Полезная и ответная ссылка находятся в файле reply-link.html
Получите index1
также, чтобы вы могли получить окно ответа, на которое вы нажимаете кнопку ответа. Используйте selectSubTab (index, index1), а затем две переменные в $scope.subTab
чтобы проверить, что выбрано.
Отредактировано: Konkko plnkr http://plnkr.co/edit/lbn57aPTJQpgzMaQPW6t?p=preview
ответ-box.html
<div id ="wrapper">
<form ng-submit="replysubmit()" ng-controller="BlockController">
<div class="clearfix" ng-if="isSelectedSub(index)">
<input type="textarea" tabindex="0"
style="overflow: auto; max-height: 350px; margin-top:1px;" class ="col-sm-8 col-md-8 col-lg-11" ng-model="reply.comment"
name="reply.comment" placeholder="Write a Reply" />
</div>
<blockquote ng-repeat="(index1,object) in replybox">
<h4>Name</h4>
<p>
{{object.comment}} {{index1+1}}
</p>
<p ng-if="object.helpful">{{ object.helpful }} </p>
<ul reply-links></ul>
<div class="clearfix" ng-if="isSelectedSub(index, index1)">
<input type="textarea" tabindex="0"
style="overflow: auto; max-height: 350px; margin-top:1px;" class ="col-sm-8 col-md-8 col-lg-11" ng-model="reply.comment"
name="reply.comment" placeholder="test" />
</div>
</blockquote>
</form>
</div>
ответ-links.html:
<ul class="nav nav-pills">
<li>
<a href ng-click="increaseHelpful(object)" class="glyphicon ">Helpful</a>
</li>
<li>
<a href ng-click="selectSubTab(index, index1)" class="glyphicon" >Reply</a>
</li>
</ul>
JS:
$scope.subTab = {first: null, second: null};
$scope.selectSubTab = function(setTab, setTab1){
console.log(setTab);console.log(setTab1);
$scope.subTab = {first: setTab, second: setTab1};
};
$scope.isSelectedSub = function(checkTab, checkTab1){
return $scope.subTab.first === checkTab && $scope.subTab.second === checkTab1;
};
Вот Plunker: http://plnkr.co/edit/PQ36lMXR1YOs8DP7WXMk?p=preview
То, что я сделал, добавлено helpful: 0
для объектов комментариев и ответов. Также добавлен <p ng-if="object.helpful">{{ object.helpful }} </p>
в comment-section.html и reply-box.html
Затем при нажатии на полезную добавлена новая функция под названием increaseHelpful(object)
где вы увеличиваете полезную переменную по одному на каждом клике. Конечно, вам нужно сделать так, чтобы один пользователь мог только щелкнуть его один раз, но только, например, :)