Angular で$eval 関数を使用する

Muhammad Adil 2023年1月30日
  1. Angular で $eval 関数を使用する手順
  2. Angular で $eval 関数を使用することの長所と短所
Angular で$eval 関数を使用する

Angular では、ng-model を使用してユーザー入力を特定の要素にバインドできます。ただし、式の値にアクセスする場合は、$eval を使用できます。

$eval サービスは Angular コンパイラのラッパーです。渡される式を評価するためのクリーンなインターフェイスを提供します。

式を受け取り、現在のスコープのコンテキストで評価します。つまり、現在のスコープからの変数バインディングはすべて式内で使用できます。

これはバニラ eval とは異なります。 $eval サービスは、バニラ eval のようにグローバルにではなく、現在のスコープのコンテキストで式を評価します。

$eval を使用するには、スコープ外ではなく、特定のスコープに関連して評価されることに注意する必要があります。

Angular で $eval 関数を使用する手順

$eval 関数を使用して、アプリケーションの存続期間中に式を実行できます。これは、コードを条件付きで実行したり、コードを 1 回だけ実装したりする場合に役立ちます。

  • コンテキストと $eval 関数を保持する Angular サービスを定義します。
  • リンク関数内の式またはコールバックを評価するディレクティブを作成します。
  • ディレクティブのコントローラーに挿入し、$eval というパブリック変数にバインドします。
  • 状態または条件に基づいてコードを実行する場合は常に、テンプレートで $eval を使用します。

$eval の例について説明しましょう。

JavaScript コード:

var app = angular.module('Adil', []);
app.controller("Demo", function($scope) {
    $scope.int1 = 10;
    $scope.int2 = 20;
    $scope.result = $scope.$eval('int1 +int2');
});

HTML コード:

<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.1/angular.min.js"></script>
    <script src="script.js"></script>
</head>
<body >
    <h2>Example of Angular $eval</h2>
<div ng-app="Adil">
<div ng-controller="Demo">
<input type="text" ng-model="int1" >  + <input type="text" ng-model="int2" >
<p
>{{'Result: ' + result}}</p>
</div>
</div>
</body>
</html>

ここをクリックして、上記のコードの動作を確認してください。

Angular で $eval 関数を使用することの長所と短所

Angular の $eval 関数を使用して、実行時に式を評価できます。DOM 要素を動的に作成して DOM に追加する場合、または他のアクセス方法がないオブジェクトで何かを行う必要がある場合に役立ちます。

ただし、$eval 関数にはいくつかの欠点があります。最初の欠点は、正しく使用しないとアプリケーションがインジェクション攻撃を受けやすくなるため、セキュリティの脆弱性が発生する可能性があることです。

2 番目の欠点は、$eval を使用すると、より一般的な式の関数や変数ではなく文字列の連結に依存するため、コードが読みにくくなることです。

著者: Muhammad Adil
Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook

関連記事 - Angular Function