0

インラインエディタ用のAngularjsディレクトリを作成しました。 HTMLテンプレートは、HTMLルート要素で関数とコンパイルを使用して作成されます。私の問題は、トグルを達成するために要素をクリックしたときにステータス変数を変更したいのですが、動作していないようです。AngularJSクリックがディレクティブ動的テンプレート関数内で機能しない

参考用にコードスニペットが含まれています。これは、ディレクティブリンク関数内に記述されています。

var appendTotemplate = function() { 
      var uploadMediaName = "hello"; 
      var MediaNameEditable = false; 

      template = "<a ng-if='MediaNameEditable !=true' ng-click='MediaNameEditable=true'" + uploadMediaName + "</a>" + 
          "<input ng-if='MediaNameEditable==true' type='text' value='" + uploadMediaName + "' id='mediatxt' ng-click='MediaNameEditable=false;' >"; 
      var linkFn = $compile(template); 
      var content = linkFn(scope); 
      element.append(content); 

     }(); 

コードを確認してください。私は本当にこのように実装したい。前もって感謝します!

答えて

2

var MediaNameEditableをスコープに添付する必要があります。この

var appendTotemplate = function() { 
      var uploadMediaName = "hello"; 
      scope.MediaNameEditable = false; 

      template = "<a ng-if='MediaNameEditable !=true' ng-click='MediaNameEditable=true'" + uploadMediaName + "</a>" + 
          "<input ng-if='MediaNameEditable==true' type='text' value='" + uploadMediaName + "' id='mediatxt' ng-click='MediaNameEditable=false;' >"; 
      var linkFn = $compile(template); 
      var content = linkFn(scope); 
      element.append(content); 

     }(); 

またはあなたはそれが..Thanksの作品MediaNameEditable

var appendTotemplate = function() { 
      var uploadMediaName = "hello"; 
      scope.MediaNameEditable = false; 

      scope.toggleMediaName = function(isEditable) 
      { 
       scope.MediaNameEditable = isEditable; 
      } 

      template = "<a ng-if='MediaNameEditable !=true' ng-click='toggleMediaName(true)'" + uploadMediaName + "</a>" + 
          "<input ng-if='MediaNameEditable==true' type='text' value='" + uploadMediaName + "' id='mediatxt' ng-click='toggleMediaName(false)' >"; 
      var linkFn = $compile(template); 
      var content = linkFn(scope); 
      element.append(content); 

     }(); 
+0

を切り替えるための関数を作ることができますしてみてください! – abhilash

+0

ちょっと、そのテンプレートのスコープ変数にアクセスする方法はありますか?私はそのローカル変数(uploadMediaName、MediaNameEditable)を変更して、ディレクティブスコープから取り出したいと思います。私は何か試しましたが、テンプレートの中で働いていないようです。しかし、私は警告ダイアログを使ってチェックした値を得ています。 – abhilash

+0

スコープにバインドして、テンプレートscope.uploadMediaName = "hello"で使用します。これは、コンパイル時にスコープ(linkFn(scope))で実行するため、スコープに存在する場合にテンプレートで使用される変数をコンパイルしようとします。 – Bettimms

関連する問題