2017-02-21 5 views
-1

私は1つの方法を知っており、それはスコープを使用しています。同じことをする他の方法は何ですか?AngularJSスコープ以外のディレクティブにデータを渡す方法はいくつありますか?

これはカスタムディレクティブです。ここでは、HTMLからスコープ経由でディレクティブにデータを渡すカスタム属性をいくつか作成しています。

module.directive('createFormButtons', [function() { 
    return { 
     restrict: 'EA', 
     scope: { isUpdate: '=isUpdate', saveForm: '=saveForm', saveData: '=saveData', isChange: '=isChange', isPrint: '=isPrint', isTabIndex: '=isTabIndex' }, 
     templateUrl: 'components/common/createFormButtons.html', 
     link: function ($scope, element, attrs) { 
      $scope.printpages = false; 
      $scope.save = function() { 
       $scope.$emit('save'); 
      }; 

      $scope.update = function() { 
       $scope.$emit('update'); 
      }; 

      $scope.refresh = function() { 
       $scope.$emit('refresh'); 
      }; 

      $scope.newForm = function() { 
       $scope.$emit('newForm'); 
      }; 

      $scope.print = function() { 
       $scope.printpages = !$scope.printpages; 
      }; 

      $scope.printing = function (v) { 
       event.stopPropagation(); 
       if (v === 5) 
        $scope.printpages = !$scope.printpages; 
       else 
        $scope.$emit('print', v); 

      }; 
     } 
    }; 
}]); 

これをHTMLで呼び出す方法です。

<create-form-buttons style="height:400px;" is-print="true" is-update="isUpdate" is-change="isChange" save-form="inwardForm" save-data="inward"> 

</create-form-buttons> 
+0

あなたは '$ scope'変数を使用していますが、これを行う最良の方法です、なぜ変更しますか? – Nicolas

+1

@Nicolas彼は変更を求めるのではなく、他の可能性を求めています。 – Mistalis

+0

[質問]と[トピックの内容](http://stackoverflow.com/help/on-topic)をお読みください。この質問ははるかに広いです。データを渡す他のすべての方法を求めることは、基本的に無限です。 –

答えて

0
  • することはできattrsオブジェクト上にある$parse何か。
  • 上記のデータを$broadcastとすることができ、指示文でそれを聞くことができます$scope.$on()
  • データを角度サービスに格納し、これをあなたの指示に挿入することができます。
+0

あなたの回答に感謝します。私は同じものを実装したいと思います。 –

-1

同じことを行う他の方法は何ですか?

あなたは何を達成しようとしていますか?

ビューから属性を渡す場合は、すでに使用している方法で十分です。

上記の@retoheusserと同様に、ネットワークリクエストやその他のデータソースからデータにアクセスする必要がある場合は、サービスやファクトリを作成し、それをディレクティブに挿入する方法もあります。

あなたの指示文にはmodelという文字列がバインドされていて、その指示文のプロパティにアクセスできます。

+0

実際に質問が面接官によって私に聞かれ、私はそれに答えることができませんでした。とにかくお返事いただきありがとうございます。 –