2017-05-30 110 views
0

我有一個指令,我點擊一個字段然後編輯它。對於這個指令,我可以添加一個名爲「typeinput」的屬性。如果typeinput =「textarea」,那麼我想動態字段是一個textarea而不是輸入文本。我在ng-if的幫助下做了這個驗證。動態修改文本字段。 Angular.js

enter image description here

但如果我這樣做這個停止工作,並在新的動態字段值不會被保存。我該如何解決它?

<div ng-repeat="faq in faqs"> 
     <a href='' click-to-edit ng-model='faq.pregunta' typeinput='textarea' >{{faq.pregunta}}</a> 
</div> 

    .directive('clickToEdit', function($timeout,$compile) { 

     return { 
      require: 'ngModel', 
      scope: { 
       model: '=ngModel' 
      }, 
      replace: true, 
      transclude: false, 
      // includes our template 
      template: 
       '<div class="templateRoot">'+ 
        '<div class="hover-edit-trigger" title="click to edit">'+ 
         '<div class="hover-text-field" ng-show="!editState" ng-click="toggle()">{{model}}</div>'+ 
         //'<span ng-if="type==true">'+ 
         '<input class="inputText" type="text" ng-model="localModel" ng-enter="save()" ng-show="editState" />' + 
         //'</span>'+ 
         //'<span ng-if="type==false">'+ 
         //'<textarea class="inputText" ng-model="localModel" ng-enter="save()" ng-show="editState" />' + 
         //'</span>'+ 
         '<div class="edit-button-group pull-right" ng-show="editState">'+ 
          '<div class="glyphicon glyphicon-ok" ng-click="save()"></div>'+ 
          '<div class="glyphicon glyphicon-remove" ng-click="cancel()"></div>'+ 
         '</div>'+ 
        '</div>'+ 
       '</div>', 

https://jsfiddle.net/ybmrzo5w/

+0

你plunker鏈路斷開時 – JeanJacques

+0

plunker不迴應...等我更新鏈接.. – yavg

+0

@JeanJacques https://jsfiddle.net/ybmrzo5w/ – yavg

回答

2

這裏的問題是,ng-if指令,像其他指令創建一個子範圍。

可以在ng-model使用對象屬性 - 那麼,即使ng-if創建新的子範圍,父範圍將有變化: localModel.value應該在你的情況下工作。

請參閱working jsfiddle

0

當您使用ngIf它創建一個子範圍,以便在您的textarea的和你輸入的ngModel需要引用到這樣父範圍:

ng-model="$parent.localModel"