2017-05-30 120 views
0

我有一个指令点击一个项目,并可以稍后编辑。该指令称为点击编辑。我正在做一个ng-repeat,每一行都是手风琴。我的想法是挑选编辑按钮,我可以编辑文本,就好像我点击它一样。当你点击另一个元素时,自动点击一个元素。 Angular.js

enter image description here 我该怎么办?

 <uib-accordion close-others="true"> 
    <div ng-repeat="faq in faqs"> 
     <div class="col-sm-11" > 
      <div uib-accordion-group class="panel-default" is-open="faq.open"> 
       <uib-accordion-heading > 
        <span ng-click="ignoreClick($event);" ><a href='' click-to-edit ng-model='faq.pregunta' typeinput='textarea' >{{faq.pregunta}}</a></span> <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': faq.open, 'glyphicon-chevron-right': !faq.open}"></i> 
       </uib-accordion-heading> 
       <span click-to-edit ng-model="faq.respuesta" >{{faq.respuesta}}</span> 
      </div> 
     </div> 
     <div class="col-sm-1" > 
      <button type="button" class="btn btn-default"> 
      <span class="glyphicon glyphicon glyphicon-edit"></span> 
      </button> 
     </div> 
     </div> 
    </uib-accordion> 

https://plnkr.co/edit/K5fXaIzSBkV91V7AFoqw?p=preview

+0

什么是您的实际*问题*? “我该怎么做?”没有足够的描述性。 – Claies

+0

您希望“点击编辑”指令中的文本仅可编辑吗?或者你是否需要和uib-accordion-heading一起编辑? – Hoyen

回答

0

而是初始化scope.editState = false指令里面的,你可以从你的控制器通过。

设置您的指令采取editState作为参数:

scope: { 
    model: '=ngModel', 
    editState: '=' 
} 

建立在你的控制器的每个faqeditState变量,用一个函数来切换它:

控制器:

$scope.faqs=[ 
    {"pregunta": "pregunta1", "respuesta": "respuesta1", "open":true, "editState": false}, 
    {"pregunta": "pregunta2", "respuesta": "respuesta2", "open":false, "editState": false}, 
    {"pregunta": "pregunta3", "respuesta": "respuesta3", "open":false, "editState": false} 
    ]; 

$scope.toggleEditState = function(index) { 
    $scope.faqs[index].editState = !$scope.faqs[index].editState; 
} 

控制器模板:

<a click-to-edit edit-state='faq.editState' ... > 

<button ng-click="toggleEditState($index)"></button> 

这是一个plnkr

+0

谢谢,我不太明白你的意思,我试过了,它对我没有用。 – yavg

+0

我加了一个plnkr。 –

+0

谢谢,我已经试过了,但是在任何按钮上点击时,只有第一个手风琴的元素被编辑。我需要编辑与该按钮对应的元素,如果它编辑了手风琴的标题和内容,那就太棒了。 – yavg