2017-06-08 8 views
0

私は今、多くのことを複製しなければならないhtmlスニペットを持っています。これは、HTMLスニペットを再利用可能な指令にしたいと思っています。 以下のスニペットを指示に変換したいと思います。私が好きな何動的な角度指令を作成する

<a href="#" 
    ng-click="vm.orderBy ='UserName'; reverseSort = !reverseSort"> 
            User Name 
            <span ng-show="vm.orderBy == 'UserName'"> 
             <span ng-show="!reverseSort"><i class="fa fa-sort-alpha-asc"></i></span> 
             <span ng-show="reverseSort"><i class="fa fa-sort-alpha-desc"></i></span> 
            </span> 
    </a> 

は、私はそれがダイナミックになるだろうORDERBYフィールドに任意の文字列プロパティを渡すことができますディレクティブです。 何かのように 私はvm.orderBy = ''私のメインコントローラで初期化しています。

+1

これまでに何を試みましたか?どのバージョンのangularjsを使用していますか?この目的のために指令の代わりに[component](https://docs.angularjs.org/guide/component)を使用する方が良いでしょうか? [docs](https://docs.angularjs.org/guide/directive#template-expanding-directive)を調べてみましたか?ディレクティブ/コンポーネントでテンプレートを使用する方法の例がたくさんあります。 SOは無料のコードを書くためのリソースではありません(しかし、あなたにはディレクティブを書くことを求めています)ので、まずこれを調べる前に、最小限の研究を行い、さらにいくつかの情報を提供する必要があります。 –

+0

「質問」に疑問符が表示されません。 –

+0

@ Stanislavおそらく見ることができるように、私は自分の質問にもう一度答えました。私はSOの仕組みについての教訓は必要ありません。そして、ちょっとしたこととして、SOは、パワートリップに行きたい人のためのものではありません。あなたのポイントを渡し、あなたが確信していないことを前提にしないより良い方法があります。ありがとうございました 。 – lacoder

答えて

2
angular.module('app_name', []).directive('myDirective', myDirective); 

myDirective.$inject = ["$scope"]; // dependecny injection 

function myDirective($scope) { 
    return { 
     restrict: 'E', 
     templateUrl: 'mydir.tmpl.html', 
     scope: { 
      sort: "@" 
     } 
    } 
} 

mydir.tmpl.html

<a href="#" ng-click="vm.orderBy=sort; reverseSort = !reverseSort"> 
      User Name 
      <span ng-show="vm.orderBy == sort"> 
       <span ng-show="!reverseSort"> 
        <i class="fa fa-sort-alpha-asc"></i> 
       </span> 
       <span ng-show="reverseSort"> 
        <i class="fa fa-sort-alpha-desc"></i> 
       </span> 
      </span> 
    </a> 

その後、私はすべての後にこれを並べ替えることができた

<my-directive sort = 'Username'></my-directive>

0

を使用しています。

.directive("myDirective", function() { 

     return { 
      scope:{prop:'@'}, 
      templateUrl:'/templates/Sorter.html' 

     } 

    }); 

このようなhtmlです。

<my-directive prop="UserName"></my-directive> 
関連する問題