この質問は、 Mikeの投稿「ディレクティブ内でのng-modelの使用」で尋ねられたものと似ています。
ユーザー入力フィールドに基づいて計算された出力を表示する小さなスプレッドシートであるページを書いています。ディレクティブを使用して、次のようなカスタムタグを作成しています。
<wbcalc item="var1" title="Variable 1" type="input"></wbcalc>
<wbcalc item="var2" title="Variable 2" type="input"></wbcalc>
<wbcalc item="calc" title="Calculation" type="calc"></wbcalc>
'item'フィールドは、コントローラー内のスコープデータを参照します。
$scope.var1 = '5'; // pre-entered input
$scope.var2 = '10'; // pre-entered input
$scope.calc = function() {
return parseInt($scope.var1) + parseInt($scope.var2);
};
また、「type」フィールドは、アイテムを文字列として扱うか関数として扱うかを知るために、ディレクティブのロジックで使用されます。
これのフィドルは次のとおりです。http: //jsfiddle.net/gregsandell/PTkms/3/ 出力要素を驚くべきコード行で動作させることができます。
html.append(angular.element("<span>")
.html(scope.$eval(attrs.item + "()"))
);
...そして私はこれを使用して入力をスコープ付きコントローラーデータに接続しています(これはMikeの投稿から取得しました:
var input = angular.element("<input>").attr("ng-model", attrs.item);
$compile(input)(scope);
html.append(input);
...フィールドに値を入力しますが、フィドルの入力を変更するとわかるように、値は計算にバインドされません。
コントローラスコープのデータをディレクティブ内のjqliteで生成されたhtmlにリンクするためのより良いおよび/またはより直感的な方法はありますか?