2016-03-30 13 views
0

Wenn wir zwei oder drei Kommentare mit mehreren Antworten erstellen, verursacht der "hilfreiche" Link ein Problem, wenn er auf den Index mit der gleichen Nummer klickt und so den gesamten Text mit demselben Index anzeigt . wie diese Verschachtelung zu lösen, so dass, wenn ein Link nur der jeweilige Text wird angezeigtverschachtelter ng-Repeat-Index funktioniert nicht || Nested ng-click funktioniert nicht

http://plnkr.co/edit/XS4Nro3sdIWMnopdgDYG?p=preview

die ng klicken und ng-Show Betrieb arbeiten durch myDiscuss Controller

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; 
 
    }; 
 

 
});

geklickt wird

Für HTML-Datei in den Plunker Link suchen.

Hilfreiche und Antworten Link sind in der Antwort-link.html Datei

+0

Sie wollen also erstelle eine Antwort innerhalb von re ply? Oder meinst du das, wenn du aus der Antwort hilfreich klickst, dass es nicht an einem richtigen Ort ist? – Konkko

+0

ja es ist nicht an einem richtigen Ort für einige hilfreiche Links zum Beispiel: wenn wir hilfreich klicken, dann zeigt es den ganzen Text mit dem gleichen Index – Gagan

Antwort

2

ist hier ein Plunker: http://plnkr.co/edit/PQ36lMXR1YOs8DP7WXMk?p=preview

Was ich tat, wird hinzugefügt helpful: 0 sowohl Kommentar und Objekte antworten. Auch hinzugefügt <p ng-if="object.helpful">{{ object.helpful }} </p> zu kommentieren-section.html und reply-box.html

Dann beim Klicken auf die hilfreiche hinzugefügt eine neue Funktion namens increaseHelpful(object) wo Sie die hilfreiche Variable um eins bei jedem Klick erhöhen. Natürlich müssen Sie es machen, dass ein Benutzer nur einmal klicken kann, aber nur zum Beispiel :)

+0

Funktionsname ist addHelpful oder erhöhenHilfreiche als addHelpful Funktion ist für mich sichtbar – Gagan

+0

Entschuldigung ja Ich meine erhöhenHilfreiche – Konkko

+0

War das, was Sie gesucht haben? – Konkko

2

Holen Sie sich die index1 auch in, so dass Sie die Antwort erhalten, wo Sie auf die Antwort-Schaltfläche klicken. Verwenden Sie selectSubTab (index, index1) und dann zwei Variablen in $scope.subTab, um zu überprüfen, was ausgewählt ist.

von Konkko der plnkr Herausgegeben http://plnkr.co/edit/lbn57aPTJQpgzMaQPW6t?p=preview

Antwort-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> 

Antwort-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; 
    }; 
+0

was ist die Verwendung ng-init = "reply.reply = Objekt" ?? – Gagan

+0

Oh Entschuldigung, ich habe das da gelassen. Zuerst dachte ich daran, in der Antwort ein Objekt zu machen, das innerhalb des Objekts erstellt und ablegt, so dass man es iterieren kann, so dass es bei Bedarf eine Baumstruktur von Antworten geben würde. – GnG

Verwandte Themen