2016-04-19 6 views
2

Ich habe eine Direktive erstellt, die es einem Benutzer ermöglicht, auf ein Wort zu klicken, um es in einem Textfeld zu bearbeiten, und wann und wo immer auf Körper geklickt wird, sollte es zurückkommen zu dem bearbeiteten Wort.Klicken Sie auf eine beliebige Stelle am Körper, um eine Funktion auszuführen: Direktive

html

<div markdown>bineesh</div> 

JS Richtlinie

app.directive('markdown',function() { 

/*var htmlText='<textarea cols="20" rows="10" ng-show="isEditMode" ng-dblclick="previewSwitch()" ng-model="markdown"></textarea>';*/ 
var htmlText='<input type="text" class="form-control" ng-hide="isEditMode" ng-dblclick="backToTextarea()" ng-model="markdown"/>'; 
var newHtml='<div ng-click="previewSwitch()" ng-show="isEditMode" >{{markdown}}</div>' 
var dir={ 
    restrict:'A', 
    compile:function (tElement,tAttrs,transclude) { 
     var markdown=tElement.text(); 

     tElement.html(htmlText); 
     tElement.append(newHtml); 

     return function (scope,element,attrs) { 
      scope.isEditMode=true; 
      scope.markdown=markdown; 

      scope.previewSwitch=function() { 
       scope.isEditMode=false; 
      } 
      scope.backToTextarea=function() { 
       scope.isEditMode=true; 
      } 
     }; 


    } 
    } 
    return dir; 
}); 

Ich weiß, dass etwas in der Richtlinie hinzugefügt werden muss, aber ich bin nicht in sie richtig machen, denn ich bin hier zu Angular

Antwort

3
angular.element(document).on('click', function() { 
    scope.isEditMode = false; 
}); 

element.on('click', function(e) { 
    e.stopPropagation(); 
    return false; 
}); 
+0

ja dieses s omewhat funktioniert, aber wenn ich auf Textbox klicken, um zu bearbeiten, wird es in seinen alten Zustand, da i ng-dblclick hinzugefügt haben, noch ist es auf Klick Schließen – Abhishek

+0

die einfachste Lösung, die Sie auf den Abschlag zu fangen und return false in der Rückruf –

+0

m sorry, aber könnte u mich in Einzelheiten erklärt, wie ich sagte, ich bin neu in Angular – Abhishek

Verwandte Themen